diff options
author | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-06-30 16:40:38 +0000 |
---|---|---|
committer | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-06-30 16:40:38 +0000 |
commit | e9d15cbea7a98184521c851500176da7aa424012 (patch) | |
tree | d3d6aa7ea86d11ecaa6e88efbc46a5dde1c63ea5 /addons/ooh323c/src/h323 | |
parent | b85bdd32a783a8f07004d41db8a696645685a331 (diff) |
Move Asterisk-addons modules into the main Asterisk source tree.
Someone asked yesterday, "is there a good reason why we can't just put these
modules in Asterisk?". After a brief discussion, as long as the modules are
clearly set aside in their own directory and not enabled by default, it is
perfectly fine.
For more information about why a module goes in addons, see README-addons.txt.
chan_ooh323 does not currently compile as it is behind some trunk API updates.
However, it will not build by default, so it should be okay for now.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@204413 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'addons/ooh323c/src/h323')
-rw-r--r-- | addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h | 690 | ||||
-rw-r--r-- | addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c | 1782 | ||||
-rw-r--r-- | addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c | 1269 | ||||
-rw-r--r-- | addons/ooh323c/src/h323/H323-MESSAGES.c | 112 | ||||
-rw-r--r-- | addons/ooh323c/src/h323/H323-MESSAGES.h | 6510 | ||||
-rw-r--r-- | addons/ooh323c/src/h323/H323-MESSAGESDec.c | 27199 | ||||
-rw-r--r-- | addons/ooh323c/src/h323/H323-MESSAGESEnc.c | 22596 | ||||
-rw-r--r-- | addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.c | 40 | ||||
-rw-r--r-- | addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.h | 10937 | ||||
-rw-r--r-- | addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLDec.c | 42170 | ||||
-rw-r--r-- | addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c | 26599 |
11 files changed, 139904 insertions, 0 deletions
diff --git a/addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h new file mode 100644 index 000000000..2f401b39a --- /dev/null +++ b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h @@ -0,0 +1,690 @@ +/* + * Copyright (C) 2004-2005 by Objective Systems, Inc. + * + * This software is furnished under an open source license and may be + * used and copied only in accordance with the terms of this license. + * The text of the license may generally be found in the root + * directory of this installation in the COPYING file. It + * can also be viewed online at the following URL: + * + * http://www.obj-sys.com/open/license.html + * + * Any redistributions of this file including modified versions must + * maintain this copyright notice. + * + *****************************************************************************/ +/** + * This file was generated by the Objective Systems ASN1C Compiler + * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005. + */ +#ifndef H235_SECURITY_MESSAGES_H +#define H235_SECURITY_MESSAGES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdio.h> +#include <stdlib.h> + +#include "ooasn1.h" + +/**************************************************************/ +/* */ +/* ChallengeString */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ChallengeString { + ASN1UINT numocts; + ASN1OCTET data[128]; +} H235ChallengeString; + +EXTERN int asn1PE_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue); + +EXTERN int asn1PD_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue); + +/**************************************************************/ +/* */ +/* TimeStamp */ +/* */ +/**************************************************************/ + +typedef ASN1UINT H235TimeStamp; + +EXTERN int asn1PE_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp value); + +EXTERN int asn1PD_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp* pvalue); + +/**************************************************************/ +/* */ +/* RandomVal */ +/* */ +/**************************************************************/ + +typedef ASN1INT H235RandomVal; + +EXTERN int asn1PE_H235RandomVal (OOCTXT* pctxt, H235RandomVal value); + +EXTERN int asn1PD_H235RandomVal (OOCTXT* pctxt, H235RandomVal* pvalue); + +/**************************************************************/ +/* */ +/* Password */ +/* */ +/**************************************************************/ + +typedef ASN1BMPString H235Password; + +EXTERN int asn1PE_H235Password (OOCTXT* pctxt, H235Password value); + +EXTERN int asn1PD_H235Password (OOCTXT* pctxt, H235Password* pvalue); + +/**************************************************************/ +/* */ +/* EncodedPwdCertToken */ +/* */ +/**************************************************************/ + +typedef ASN1OpenType H235EncodedPwdCertToken; + +EXTERN int asn1PE_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken value); + +EXTERN int asn1PD_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken* pvalue); + +/**************************************************************/ +/* */ +/* NonStandardParameter */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235NonStandardParameter { + ASN1OBJID nonStandardIdentifier; + ASN1DynOctStr data; +} H235NonStandardParameter; + +EXTERN int asn1PE_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue); + +EXTERN int asn1PD_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue); + +/**************************************************************/ +/* */ +/* AuthenticationBES */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H235AuthenticationBES_default_ 1 +#define T_H235AuthenticationBES_radius 2 +#define T_H235AuthenticationBES_extElem1 3 + +typedef struct EXTERN H235AuthenticationBES { + int t; +} H235AuthenticationBES; + +EXTERN int asn1PE_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue); + +EXTERN int asn1PD_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue); + +/**************************************************************/ +/* */ +/* AuthenticationMechanism */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H235AuthenticationMechanism_dhExch 1 +#define T_H235AuthenticationMechanism_pwdSymEnc 2 +#define T_H235AuthenticationMechanism_pwdHash 3 +#define T_H235AuthenticationMechanism_certSign 4 +#define T_H235AuthenticationMechanism_ipsec 5 +#define T_H235AuthenticationMechanism_tls 6 +#define T_H235AuthenticationMechanism_nonStandard 7 +#define T_H235AuthenticationMechanism_authenticationBES 8 +#define T_H235AuthenticationMechanism_extElem1 9 + +typedef struct EXTERN H235AuthenticationMechanism { + int t; + union { + /* t = 1 */ + /* t = 2 */ + /* t = 3 */ + /* t = 4 */ + /* t = 5 */ + /* t = 6 */ + /* t = 7 */ + H235NonStandardParameter *nonStandard; + /* t = 8 */ + H235AuthenticationBES *authenticationBES; + /* t = 9 */ + } u; +} H235AuthenticationMechanism; + +EXTERN int asn1PE_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue); + +EXTERN int asn1PD_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue); + +/**************************************************************/ +/* */ +/* DHset_halfkey */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235DHset_halfkey { + ASN1UINT numbits; + ASN1OCTET data[256]; +} H235DHset_halfkey; + +EXTERN int asn1PE_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue); + +EXTERN int asn1PD_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue); + +/**************************************************************/ +/* */ +/* DHset_modSize */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235DHset_modSize { + ASN1UINT numbits; + ASN1OCTET data[256]; +} H235DHset_modSize; + +EXTERN int asn1PE_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue); + +EXTERN int asn1PD_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue); + +/**************************************************************/ +/* */ +/* DHset_generator */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235DHset_generator { + ASN1UINT numbits; + ASN1OCTET data[256]; +} H235DHset_generator; + +EXTERN int asn1PE_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue); + +EXTERN int asn1PD_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue); + +/**************************************************************/ +/* */ +/* DHset */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235DHset { + H235DHset_halfkey halfkey; + H235DHset_modSize modSize; + H235DHset_generator generator; +} H235DHset; + +EXTERN int asn1PE_H235DHset (OOCTXT* pctxt, H235DHset* pvalue); + +EXTERN int asn1PD_H235DHset (OOCTXT* pctxt, H235DHset* pvalue); + +/**************************************************************/ +/* */ +/* TypedCertificate */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235TypedCertificate { + ASN1OBJID type; + ASN1DynOctStr certificate; +} H235TypedCertificate; + +EXTERN int asn1PE_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue); + +EXTERN int asn1PD_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue); + +/**************************************************************/ +/* */ +/* Identifier */ +/* */ +/**************************************************************/ + +typedef ASN1BMPString H235Identifier; + +EXTERN int asn1PE_H235Identifier (OOCTXT* pctxt, H235Identifier value); + +EXTERN int asn1PD_H235Identifier (OOCTXT* pctxt, H235Identifier* pvalue); + +/**************************************************************/ +/* */ +/* ECpoint_x */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ECpoint_x { + ASN1UINT numbits; + ASN1OCTET data[64]; +} H235ECpoint_x; + +EXTERN int asn1PE_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue); + +EXTERN int asn1PD_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue); + +/**************************************************************/ +/* */ +/* ECpoint_y */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ECpoint_y { + ASN1UINT numbits; + ASN1OCTET data[64]; +} H235ECpoint_y; + +EXTERN int asn1PE_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue); + +EXTERN int asn1PD_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue); + +/**************************************************************/ +/* */ +/* ECpoint */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ECpoint { + struct { + unsigned xPresent : 1; + unsigned yPresent : 1; + } m; + H235ECpoint_x x; + H235ECpoint_y y; +} H235ECpoint; + +EXTERN int asn1PE_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue); + +EXTERN int asn1PD_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue); + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdhp_modulus */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ECKASDH_eckasdhp_modulus { + ASN1UINT numbits; + ASN1OCTET data[64]; +} H235ECKASDH_eckasdhp_modulus; + +EXTERN int asn1PE_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue); + +EXTERN int asn1PD_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue); + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdhp_weierstrassA */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ECKASDH_eckasdhp_weierstrassA { + ASN1UINT numbits; + ASN1OCTET data[64]; +} H235ECKASDH_eckasdhp_weierstrassA; + +EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue); + +EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue); + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdhp_weierstrassB */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ECKASDH_eckasdhp_weierstrassB { + ASN1UINT numbits; + ASN1OCTET data[64]; +} H235ECKASDH_eckasdhp_weierstrassB; + +EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue); + +EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue); + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdhp */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ECKASDH_eckasdhp { + H235ECpoint public_key; + H235ECKASDH_eckasdhp_modulus modulus; + H235ECpoint base; + H235ECKASDH_eckasdhp_weierstrassA weierstrassA; + H235ECKASDH_eckasdhp_weierstrassB weierstrassB; +} H235ECKASDH_eckasdhp; + +EXTERN int asn1PE_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue); + +EXTERN int asn1PD_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue); + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdh2_fieldSize */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ECKASDH_eckasdh2_fieldSize { + ASN1UINT numbits; + ASN1OCTET data[64]; +} H235ECKASDH_eckasdh2_fieldSize; + +EXTERN int asn1PE_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue); + +EXTERN int asn1PD_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue); + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdh2_weierstrassA */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ECKASDH_eckasdh2_weierstrassA { + ASN1UINT numbits; + ASN1OCTET data[64]; +} H235ECKASDH_eckasdh2_weierstrassA; + +EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue); + +EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue); + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdh2_weierstrassB */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ECKASDH_eckasdh2_weierstrassB { + ASN1UINT numbits; + ASN1OCTET data[64]; +} H235ECKASDH_eckasdh2_weierstrassB; + +EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue); + +EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue); + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdh2 */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ECKASDH_eckasdh2 { + H235ECpoint public_key; + H235ECKASDH_eckasdh2_fieldSize fieldSize; + H235ECpoint base; + H235ECKASDH_eckasdh2_weierstrassA weierstrassA; + H235ECKASDH_eckasdh2_weierstrassB weierstrassB; +} H235ECKASDH_eckasdh2; + +EXTERN int asn1PE_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue); + +EXTERN int asn1PD_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue); + +/**************************************************************/ +/* */ +/* ECKASDH */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H235ECKASDH_eckasdhp 1 +#define T_H235ECKASDH_eckasdh2 2 +#define T_H235ECKASDH_extElem1 3 + +typedef struct EXTERN H235ECKASDH { + int t; + union { + /* t = 1 */ + H235ECKASDH_eckasdhp *eckasdhp; + /* t = 2 */ + H235ECKASDH_eckasdh2 *eckasdh2; + /* t = 3 */ + } u; +} H235ECKASDH; + +EXTERN int asn1PE_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue); + +EXTERN int asn1PD_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue); + +/**************************************************************/ +/* */ +/* ClearToken */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ClearToken { + struct { + unsigned timeStampPresent : 1; + unsigned passwordPresent : 1; + unsigned dhkeyPresent : 1; + unsigned challengePresent : 1; + unsigned randomPresent : 1; + unsigned certificatePresent : 1; + unsigned generalIDPresent : 1; + unsigned nonStandardPresent : 1; + unsigned eckasdhkeyPresent : 1; + unsigned sendersIDPresent : 1; + } m; + ASN1OBJID tokenOID; + H235TimeStamp timeStamp; + H235Password password; + H235DHset dhkey; + H235ChallengeString challenge; + H235RandomVal random; + H235TypedCertificate certificate; + H235Identifier generalID; + H235NonStandardParameter nonStandard; + H235ECKASDH eckasdhkey; + H235Identifier sendersID; +} H235ClearToken; + +EXTERN int asn1PE_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue); + +EXTERN int asn1PD_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue); + +/**************************************************************/ +/* */ +/* IV8 */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235IV8 { + ASN1UINT numocts; + ASN1OCTET data[8]; +} H235IV8; + +EXTERN int asn1PE_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue); + +EXTERN int asn1PD_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue); + +/**************************************************************/ +/* */ +/* IV16 */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235IV16 { + ASN1UINT numocts; + ASN1OCTET data[16]; +} H235IV16; + +EXTERN int asn1PE_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue); + +EXTERN int asn1PD_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue); + +/**************************************************************/ +/* */ +/* Params */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235Params { + struct { + unsigned ranIntPresent : 1; + unsigned iv8Present : 1; + unsigned iv16Present : 1; + } m; + ASN1INT ranInt; + H235IV8 iv8; + H235IV16 iv16; +} H235Params; + +EXTERN int asn1PE_H235Params (OOCTXT* pctxt, H235Params* pvalue); + +EXTERN int asn1PD_H235Params (OOCTXT* pctxt, H235Params* pvalue); + +/**************************************************************/ +/* */ +/* ENCRYPTED */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235ENCRYPTED { + ASN1OBJID algorithmOID; + H235Params paramS; + ASN1DynOctStr encryptedData; +} H235ENCRYPTED; + +EXTERN int asn1PE_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue); + +EXTERN int asn1PD_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue); + +/**************************************************************/ +/* */ +/* CryptoToken_cryptoEncryptedToken */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235CryptoToken_cryptoEncryptedToken { + ASN1OBJID tokenOID; + H235ENCRYPTED token; +} H235CryptoToken_cryptoEncryptedToken; + +EXTERN int asn1PE_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue); + +EXTERN int asn1PD_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue); + +/**************************************************************/ +/* */ +/* EncodedGeneralToken */ +/* */ +/**************************************************************/ + +typedef ASN1OpenType H235EncodedGeneralToken; + +EXTERN int asn1PE_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken value); + +EXTERN int asn1PD_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken* pvalue); + +/**************************************************************/ +/* */ +/* CryptoToken_cryptoSignedToken_token */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235CryptoToken_cryptoSignedToken_token { + H235EncodedGeneralToken toBeSigned; + ASN1OBJID algorithmOID; + H235Params paramS; + ASN1DynBitStr signature; +} H235CryptoToken_cryptoSignedToken_token; + +EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue); + +EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue); + +/**************************************************************/ +/* */ +/* CryptoToken_cryptoSignedToken */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235CryptoToken_cryptoSignedToken { + ASN1OBJID tokenOID; + H235CryptoToken_cryptoSignedToken_token token; +} H235CryptoToken_cryptoSignedToken; + +EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue); + +EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue); + +/**************************************************************/ +/* */ +/* HASHED */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235HASHED { + ASN1OBJID algorithmOID; + H235Params paramS; + ASN1DynBitStr hash; +} H235HASHED; + +EXTERN int asn1PE_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue); + +EXTERN int asn1PD_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue); + +/**************************************************************/ +/* */ +/* CryptoToken_cryptoHashedToken */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H235CryptoToken_cryptoHashedToken { + ASN1OBJID tokenOID; + H235ClearToken hashedVals; + H235HASHED token; +} H235CryptoToken_cryptoHashedToken; + +EXTERN int asn1PE_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue); + +EXTERN int asn1PD_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue); + +/**************************************************************/ +/* */ +/* CryptoToken */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H235CryptoToken_cryptoEncryptedToken 1 +#define T_H235CryptoToken_cryptoSignedToken 2 +#define T_H235CryptoToken_cryptoHashedToken 3 +#define T_H235CryptoToken_cryptoPwdEncr 4 +#define T_H235CryptoToken_extElem1 5 + +typedef struct EXTERN H235CryptoToken { + int t; + union { + /* t = 1 */ + H235CryptoToken_cryptoEncryptedToken *cryptoEncryptedToken; + /* t = 2 */ + H235CryptoToken_cryptoSignedToken *cryptoSignedToken; + /* t = 3 */ + H235CryptoToken_cryptoHashedToken *cryptoHashedToken; + /* t = 4 */ + H235ENCRYPTED *cryptoPwdEncr; + /* t = 5 */ + } u; +} H235CryptoToken; + +EXTERN int asn1PE_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue); + +EXTERN int asn1PD_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c new file mode 100644 index 000000000..897bf0eec --- /dev/null +++ b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c @@ -0,0 +1,1782 @@ +/* + * Copyright (C) 2004-2005 by Objective Systems, Inc. + * + * This software is furnished under an open source license and may be + * used and copied only in accordance with the terms of this license. + * The text of the license may generally be found in the root + * directory of this installation in the COPYING file. It + * can also be viewed online at the following URL: + * + * http://www.obj-sys.com/open/license.html + * + * Any redistributions of this file including modified versions must + * maintain this copyright notice. + * + *****************************************************************************/ +/** + * This file was generated by the Objective Systems ASN1C Compiler + * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005. + */ +#include "ooasn1.h" +#include "H235-SECURITY-MESSAGES.h" +#include "eventHandler.h" + +/**************************************************************/ +/* */ +/* ChallengeString */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 8, 128, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TimeStamp */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp* pvalue) +{ + int stat = ASN_OK; + + stat = decodeConsUnsigned (pctxt, pvalue, 1U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, *pvalue); + + return (stat); +} + +/**************************************************************/ +/* */ +/* RandomVal */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235RandomVal (OOCTXT* pctxt, H235RandomVal* pvalue) +{ + int stat = ASN_OK; + + stat = decodeUnconsInteger (pctxt, pvalue); + if (stat != ASN_OK) return stat; + invokeIntValue (pctxt, *pvalue); + + return (stat); +} + +/**************************************************************/ +/* */ +/* Password */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235Password (OOCTXT* pctxt, H235Password* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBMPString (pctxt, pvalue, 0); + if (stat != ASN_OK) return stat; + invokeCharStr16BitValue (pctxt, pvalue->nchars, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncodedPwdCertToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken* pvalue) +{ + int stat = ASN_OK; + + stat = decodeOpenType (pctxt, &pvalue->data, &pvalue->numocts); + if (stat != ASN_OK) return stat; + invokeOpenTypeValue + (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* NonStandardParameter */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue) +{ + int stat = ASN_OK; + + /* decode nonStandardIdentifier */ + + invokeStartElement (pctxt, "nonStandardIdentifier", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->nonStandardIdentifier); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->nonStandardIdentifier.numids, pvalue->nonStandardIdentifier.subid); + + invokeEndElement (pctxt, "nonStandardIdentifier", -1); + + /* decode data */ + + invokeStartElement (pctxt, "data", -1); + + stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->data); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->data.numocts, pvalue->data.data); + + invokeEndElement (pctxt, "data", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* AuthenticationBES */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 1); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* default_ */ + case 0: + invokeStartElement (pctxt, "default_", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "default_", -1); + + break; + + /* radius */ + case 1: + invokeStartElement (pctxt, "radius", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "radius", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 3; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* AuthenticationMechanism */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + OOCTXT lctxt; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 6); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* dhExch */ + case 0: + invokeStartElement (pctxt, "dhExch", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "dhExch", -1); + + break; + + /* pwdSymEnc */ + case 1: + invokeStartElement (pctxt, "pwdSymEnc", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "pwdSymEnc", -1); + + break; + + /* pwdHash */ + case 2: + invokeStartElement (pctxt, "pwdHash", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "pwdHash", -1); + + break; + + /* certSign */ + case 3: + invokeStartElement (pctxt, "certSign", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "certSign", -1); + + break; + + /* ipsec */ + case 4: + invokeStartElement (pctxt, "ipsec", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "ipsec", -1); + + break; + + /* tls */ + case 5: + invokeStartElement (pctxt, "tls", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "tls", -1); + + break; + + /* nonStandard */ + case 6: + invokeStartElement (pctxt, "nonStandard", -1); + + pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H235NonStandardParameter); + + stat = asn1PD_H235NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandard", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 8; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + copyContext (&lctxt, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (pvalue->t) { + /* authenticationBES */ + case 8: + invokeStartElement (pctxt, "authenticationBES", -1); + + pvalue->u.authenticationBES = ALLOC_ASN1ELEM (pctxt, H235AuthenticationBES); + + stat = asn1PD_H235AuthenticationBES (pctxt, pvalue->u.authenticationBES); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "authenticationBES", -1); + + break; + + default:; + } + + copyContext (pctxt, &lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DHset_halfkey */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBitString (pctxt, + &pvalue->numbits, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* DHset_modSize */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBitString (pctxt, + &pvalue->numbits, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* DHset_generator */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBitString (pctxt, + &pvalue->numbits, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* DHset */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235DHset (OOCTXT* pctxt, H235DHset* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* decode halfkey */ + + invokeStartElement (pctxt, "halfkey", -1); + + stat = asn1PD_H235DHset_halfkey (pctxt, &pvalue->halfkey); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "halfkey", -1); + + /* decode modSize */ + + invokeStartElement (pctxt, "modSize", -1); + + stat = asn1PD_H235DHset_modSize (pctxt, &pvalue->modSize); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "modSize", -1); + + /* decode generator */ + + invokeStartElement (pctxt, "generator", -1); + + stat = asn1PD_H235DHset_generator (pctxt, &pvalue->generator); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "generator", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TypedCertificate */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* decode type */ + + invokeStartElement (pctxt, "type", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->type); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->type.numids, pvalue->type.subid); + + invokeEndElement (pctxt, "type", -1); + + /* decode certificate */ + + invokeStartElement (pctxt, "certificate", -1); + + stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->certificate); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->certificate.numocts, pvalue->certificate.data); + + invokeEndElement (pctxt, "certificate", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* Identifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235Identifier (OOCTXT* pctxt, H235Identifier* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBMPString (pctxt, pvalue, 0); + if (stat != ASN_OK) return stat; + invokeCharStr16BitValue (pctxt, pvalue->nchars, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECpoint_x */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBitString (pctxt, + &pvalue->numbits, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECpoint_y */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBitString (pctxt, + &pvalue->numbits, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECpoint */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.xPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.yPresent = optbit; + + /* decode x */ + + if (pvalue->m.xPresent) { + invokeStartElement (pctxt, "x", -1); + + stat = asn1PD_H235ECpoint_x (pctxt, &pvalue->x); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "x", -1); + } + + /* decode y */ + + if (pvalue->m.yPresent) { + invokeStartElement (pctxt, "y", -1); + + stat = asn1PD_H235ECpoint_y (pctxt, &pvalue->y); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "y", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdhp_modulus */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBitString (pctxt, + &pvalue->numbits, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdhp_weierstrassA */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBitString (pctxt, + &pvalue->numbits, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdhp_weierstrassB */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBitString (pctxt, + &pvalue->numbits, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdhp */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue) +{ + int stat = ASN_OK; + + /* decode public_key */ + + invokeStartElement (pctxt, "public_key", -1); + + stat = asn1PD_H235ECpoint (pctxt, &pvalue->public_key); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "public_key", -1); + + /* decode modulus */ + + invokeStartElement (pctxt, "modulus", -1); + + stat = asn1PD_H235ECKASDH_eckasdhp_modulus (pctxt, &pvalue->modulus); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "modulus", -1); + + /* decode base */ + + invokeStartElement (pctxt, "base", -1); + + stat = asn1PD_H235ECpoint (pctxt, &pvalue->base); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "base", -1); + + /* decode weierstrassA */ + + invokeStartElement (pctxt, "weierstrassA", -1); + + stat = asn1PD_H235ECKASDH_eckasdhp_weierstrassA (pctxt, &pvalue->weierstrassA); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "weierstrassA", -1); + + /* decode weierstrassB */ + + invokeStartElement (pctxt, "weierstrassB", -1); + + stat = asn1PD_H235ECKASDH_eckasdhp_weierstrassB (pctxt, &pvalue->weierstrassB); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "weierstrassB", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdh2_fieldSize */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBitString (pctxt, + &pvalue->numbits, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdh2_weierstrassA */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBitString (pctxt, + &pvalue->numbits, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdh2_weierstrassB */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBitString (pctxt, + &pvalue->numbits, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdh2 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue) +{ + int stat = ASN_OK; + + /* decode public_key */ + + invokeStartElement (pctxt, "public_key", -1); + + stat = asn1PD_H235ECpoint (pctxt, &pvalue->public_key); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "public_key", -1); + + /* decode fieldSize */ + + invokeStartElement (pctxt, "fieldSize", -1); + + stat = asn1PD_H235ECKASDH_eckasdh2_fieldSize (pctxt, &pvalue->fieldSize); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "fieldSize", -1); + + /* decode base */ + + invokeStartElement (pctxt, "base", -1); + + stat = asn1PD_H235ECpoint (pctxt, &pvalue->base); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "base", -1); + + /* decode weierstrassA */ + + invokeStartElement (pctxt, "weierstrassA", -1); + + stat = asn1PD_H235ECKASDH_eckasdh2_weierstrassA (pctxt, &pvalue->weierstrassA); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "weierstrassA", -1); + + /* decode weierstrassB */ + + invokeStartElement (pctxt, "weierstrassB", -1); + + stat = asn1PD_H235ECKASDH_eckasdh2_weierstrassB (pctxt, &pvalue->weierstrassB); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "weierstrassB", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 1); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* eckasdhp */ + case 0: + invokeStartElement (pctxt, "eckasdhp", -1); + + pvalue->u.eckasdhp = ALLOC_ASN1ELEM (pctxt, H235ECKASDH_eckasdhp); + + stat = asn1PD_H235ECKASDH_eckasdhp (pctxt, pvalue->u.eckasdhp); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "eckasdhp", -1); + + break; + + /* eckasdh2 */ + case 1: + invokeStartElement (pctxt, "eckasdh2", -1); + + pvalue->u.eckasdh2 = ALLOC_ASN1ELEM (pctxt, H235ECKASDH_eckasdh2); + + stat = asn1PD_H235ECKASDH_eckasdh2 (pctxt, pvalue->u.eckasdh2); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "eckasdh2", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 3; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ClearToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.timeStampPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.passwordPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.dhkeyPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.challengePresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.randomPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.certificatePresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.generalIDPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardPresent = optbit; + + /* decode tokenOID */ + + invokeStartElement (pctxt, "tokenOID", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid); + + invokeEndElement (pctxt, "tokenOID", -1); + + /* decode timeStamp */ + + if (pvalue->m.timeStampPresent) { + invokeStartElement (pctxt, "timeStamp", -1); + + stat = asn1PD_H235TimeStamp (pctxt, &pvalue->timeStamp); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "timeStamp", -1); + } + + /* decode password */ + + if (pvalue->m.passwordPresent) { + invokeStartElement (pctxt, "password", -1); + + stat = asn1PD_H235Password (pctxt, &pvalue->password); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "password", -1); + } + + /* decode dhkey */ + + if (pvalue->m.dhkeyPresent) { + invokeStartElement (pctxt, "dhkey", -1); + + stat = asn1PD_H235DHset (pctxt, &pvalue->dhkey); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dhkey", -1); + } + + /* decode challenge */ + + if (pvalue->m.challengePresent) { + invokeStartElement (pctxt, "challenge", -1); + + stat = asn1PD_H235ChallengeString (pctxt, &pvalue->challenge); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "challenge", -1); + } + + /* decode random */ + + if (pvalue->m.randomPresent) { + invokeStartElement (pctxt, "random", -1); + + stat = asn1PD_H235RandomVal (pctxt, &pvalue->random); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "random", -1); + } + + /* decode certificate */ + + if (pvalue->m.certificatePresent) { + invokeStartElement (pctxt, "certificate", -1); + + stat = asn1PD_H235TypedCertificate (pctxt, &pvalue->certificate); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "certificate", -1); + } + + /* decode generalID */ + + if (pvalue->m.generalIDPresent) { + invokeStartElement (pctxt, "generalID", -1); + + stat = asn1PD_H235Identifier (pctxt, &pvalue->generalID); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "generalID", -1); + } + + /* decode nonStandard */ + + if (pvalue->m.nonStandardPresent) { + invokeStartElement (pctxt, "nonStandard", -1); + + stat = asn1PD_H235NonStandardParameter (pctxt, &pvalue->nonStandard); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandard", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 2 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.eckasdhkeyPresent = 1; + + invokeStartElement (pctxt, "eckasdhkey", -1); + + stat = asn1PD_H235ECKASDH (pctxt, &pvalue->eckasdhkey); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "eckasdhkey", -1); + break; + + case 1: + pvalue->m.sendersIDPresent = 1; + + invokeStartElement (pctxt, "sendersID", -1); + + stat = asn1PD_H235Identifier (pctxt, &pvalue->sendersID); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "sendersID", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* IV8 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 8, 8, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* IV16 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* Params */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235Params (OOCTXT* pctxt, H235Params* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.ranIntPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.iv8Present = optbit; + + /* decode ranInt */ + + if (pvalue->m.ranIntPresent) { + invokeStartElement (pctxt, "ranInt", -1); + + stat = decodeUnconsInteger (pctxt, &pvalue->ranInt); + if (stat != ASN_OK) return stat; + invokeIntValue (pctxt, pvalue->ranInt); + + invokeEndElement (pctxt, "ranInt", -1); + } + + /* decode iv8 */ + + if (pvalue->m.iv8Present) { + invokeStartElement (pctxt, "iv8", -1); + + stat = asn1PD_H235IV8 (pctxt, &pvalue->iv8); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "iv8", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 1 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.iv16Present = 1; + + invokeStartElement (pctxt, "iv16", -1); + + stat = asn1PD_H235IV16 (pctxt, &pvalue->iv16); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "iv16", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ENCRYPTED */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue) +{ + int stat = ASN_OK; + + /* decode algorithmOID */ + + invokeStartElement (pctxt, "algorithmOID", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid); + + invokeEndElement (pctxt, "algorithmOID", -1); + + /* decode paramS */ + + invokeStartElement (pctxt, "paramS", -1); + + stat = asn1PD_H235Params (pctxt, &pvalue->paramS); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "paramS", -1); + + /* decode encryptedData */ + + invokeStartElement (pctxt, "encryptedData", -1); + + stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->encryptedData); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->encryptedData.numocts, pvalue->encryptedData.data); + + invokeEndElement (pctxt, "encryptedData", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoToken_cryptoEncryptedToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue) +{ + int stat = ASN_OK; + + /* decode tokenOID */ + + invokeStartElement (pctxt, "tokenOID", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid); + + invokeEndElement (pctxt, "tokenOID", -1); + + /* decode token */ + + invokeStartElement (pctxt, "token", -1); + + stat = asn1PD_H235ENCRYPTED (pctxt, &pvalue->token); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "token", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncodedGeneralToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken* pvalue) +{ + int stat = ASN_OK; + + stat = decodeOpenType (pctxt, &pvalue->data, &pvalue->numocts); + if (stat != ASN_OK) return stat; + invokeOpenTypeValue + (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoToken_cryptoSignedToken_token */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue) +{ + int stat = ASN_OK; + + /* decode toBeSigned */ + + invokeStartElement (pctxt, "toBeSigned", -1); + + stat = asn1PD_H235EncodedGeneralToken (pctxt, &pvalue->toBeSigned); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "toBeSigned", -1); + + /* decode algorithmOID */ + + invokeStartElement (pctxt, "algorithmOID", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid); + + invokeEndElement (pctxt, "algorithmOID", -1); + + /* decode paramS */ + + invokeStartElement (pctxt, "paramS", -1); + + stat = asn1PD_H235Params (pctxt, &pvalue->paramS); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "paramS", -1); + + /* decode signature */ + + invokeStartElement (pctxt, "signature", -1); + + stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->signature); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->signature.numbits, pvalue->signature.data); + + invokeEndElement (pctxt, "signature", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoToken_cryptoSignedToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue) +{ + int stat = ASN_OK; + + /* decode tokenOID */ + + invokeStartElement (pctxt, "tokenOID", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid); + + invokeEndElement (pctxt, "tokenOID", -1); + + /* decode token */ + + invokeStartElement (pctxt, "token", -1); + + stat = asn1PD_H235CryptoToken_cryptoSignedToken_token (pctxt, &pvalue->token); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "token", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* HASHED */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue) +{ + int stat = ASN_OK; + + /* decode algorithmOID */ + + invokeStartElement (pctxt, "algorithmOID", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid); + + invokeEndElement (pctxt, "algorithmOID", -1); + + /* decode paramS */ + + invokeStartElement (pctxt, "paramS", -1); + + stat = asn1PD_H235Params (pctxt, &pvalue->paramS); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "paramS", -1); + + /* decode hash */ + + invokeStartElement (pctxt, "hash", -1); + + stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->hash); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->hash.numbits, pvalue->hash.data); + + invokeEndElement (pctxt, "hash", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoToken_cryptoHashedToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue) +{ + int stat = ASN_OK; + + /* decode tokenOID */ + + invokeStartElement (pctxt, "tokenOID", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid); + + invokeEndElement (pctxt, "tokenOID", -1); + + /* decode hashedVals */ + + invokeStartElement (pctxt, "hashedVals", -1); + + stat = asn1PD_H235ClearToken (pctxt, &pvalue->hashedVals); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "hashedVals", -1); + + /* decode token */ + + invokeStartElement (pctxt, "token", -1); + + stat = asn1PD_H235HASHED (pctxt, &pvalue->token); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "token", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 3); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* cryptoEncryptedToken */ + case 0: + invokeStartElement (pctxt, "cryptoEncryptedToken", -1); + + pvalue->u.cryptoEncryptedToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken_cryptoEncryptedToken); + + stat = asn1PD_H235CryptoToken_cryptoEncryptedToken (pctxt, pvalue->u.cryptoEncryptedToken); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "cryptoEncryptedToken", -1); + + break; + + /* cryptoSignedToken */ + case 1: + invokeStartElement (pctxt, "cryptoSignedToken", -1); + + pvalue->u.cryptoSignedToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken_cryptoSignedToken); + + stat = asn1PD_H235CryptoToken_cryptoSignedToken (pctxt, pvalue->u.cryptoSignedToken); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "cryptoSignedToken", -1); + + break; + + /* cryptoHashedToken */ + case 2: + invokeStartElement (pctxt, "cryptoHashedToken", -1); + + pvalue->u.cryptoHashedToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken_cryptoHashedToken); + + stat = asn1PD_H235CryptoToken_cryptoHashedToken (pctxt, pvalue->u.cryptoHashedToken); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "cryptoHashedToken", -1); + + break; + + /* cryptoPwdEncr */ + case 3: + invokeStartElement (pctxt, "cryptoPwdEncr", -1); + + pvalue->u.cryptoPwdEncr = ALLOC_ASN1ELEM (pctxt, H235ENCRYPTED); + + stat = asn1PD_H235ENCRYPTED (pctxt, pvalue->u.cryptoPwdEncr); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "cryptoPwdEncr", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 5; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + diff --git a/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c new file mode 100644 index 000000000..8530c5198 --- /dev/null +++ b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c @@ -0,0 +1,1269 @@ +/* + * Copyright (C) 2004-2005 by Objective Systems, Inc. + * + * This software is furnished under an open source license and may be + * used and copied only in accordance with the terms of this license. + * The text of the license may generally be found in the root + * directory of this installation in the COPYING file. It + * can also be viewed online at the following URL: + * + * http://www.obj-sys.com/open/license.html + * + * Any redistributions of this file including modified versions must + * maintain this copyright notice. + * + *****************************************************************************/ +/** + * This file was generated by the Objective Systems ASN1C Compiler + * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005. + */ +#include "ooasn1.h" +#include "H235-SECURITY-MESSAGES.h" + +/**************************************************************/ +/* */ +/* ChallengeString */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 8, 128, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* TimeStamp */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp value) +{ + int stat = ASN_OK; + + stat = encodeConsUnsigned (pctxt, value, 1U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RandomVal */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235RandomVal (OOCTXT* pctxt, H235RandomVal value) +{ + int stat = ASN_OK; + + stat = encodeUnconsInteger (pctxt, value); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* Password */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235Password (OOCTXT* pctxt, H235Password value) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBMPString (pctxt, value, 0); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncodedPwdCertToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken value) +{ + int stat = ASN_OK; + + stat = encodeOpenType (pctxt, value.numocts, value.data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* NonStandardParameter */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue) +{ + int stat = ASN_OK; + + /* encode nonStandardIdentifier */ + + stat = encodeObjectIdentifier (pctxt, &pvalue->nonStandardIdentifier); + if (stat != ASN_OK) return stat; + + /* encode data */ + + stat = encodeOctetString (pctxt, pvalue->data.numocts, pvalue->data.data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* AuthenticationBES */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* default_ */ + case 1: + /* NULL */ + break; + + /* radius */ + case 2: + /* NULL */ + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* AuthenticationMechanism */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 7); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 6); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* dhExch */ + case 1: + /* NULL */ + break; + + /* pwdSymEnc */ + case 2: + /* NULL */ + break; + + /* pwdHash */ + case 3: + /* NULL */ + break; + + /* certSign */ + case 4: + /* NULL */ + break; + + /* ipsec */ + case 5: + /* NULL */ + break; + + /* tls */ + case 6: + /* NULL */ + break; + + /* nonStandard */ + case 7: + stat = asn1PE_H235NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 8); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + switch (pvalue->t) + { + /* authenticationBES */ + case 8: + stat = asn1PE_H235AuthenticationBES (&lctxt, pvalue->u.authenticationBES); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + break; + + default: + ; + } + + stat = encodeByteAlign (pctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DHset_halfkey */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* DHset_modSize */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* DHset_generator */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* DHset */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235DHset (OOCTXT* pctxt, H235DHset* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode halfkey */ + + stat = asn1PE_H235DHset_halfkey (pctxt, &pvalue->halfkey); + if (stat != ASN_OK) return stat; + + /* encode modSize */ + + stat = asn1PE_H235DHset_modSize (pctxt, &pvalue->modSize); + if (stat != ASN_OK) return stat; + + /* encode generator */ + + stat = asn1PE_H235DHset_generator (pctxt, &pvalue->generator); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* TypedCertificate */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + /* encode type */ + + stat = encodeObjectIdentifier (pctxt, &pvalue->type); + if (stat != ASN_OK) return stat; + + /* encode certificate */ + + stat = encodeOctetString (pctxt, pvalue->certificate.numocts, pvalue->certificate.data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* Identifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235Identifier (OOCTXT* pctxt, H235Identifier value) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBMPString (pctxt, value, 0); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECpoint_x */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECpoint_y */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECpoint */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = 0; + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.xPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.yPresent); + + /* encode x */ + + if (pvalue->m.xPresent) { + stat = asn1PE_H235ECpoint_x (pctxt, &pvalue->x); + if (stat != ASN_OK) return stat; + } + + /* encode y */ + + if (pvalue->m.yPresent) { + stat = asn1PE_H235ECpoint_y (pctxt, &pvalue->y); + if (stat != ASN_OK) return stat; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdhp_modulus */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdhp_weierstrassA */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdhp_weierstrassB */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdhp */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue) +{ + int stat = ASN_OK; + + /* encode public_key */ + + stat = asn1PE_H235ECpoint (pctxt, &pvalue->public_key); + if (stat != ASN_OK) return stat; + + /* encode modulus */ + + stat = asn1PE_H235ECKASDH_eckasdhp_modulus (pctxt, &pvalue->modulus); + if (stat != ASN_OK) return stat; + + /* encode base */ + + stat = asn1PE_H235ECpoint (pctxt, &pvalue->base); + if (stat != ASN_OK) return stat; + + /* encode weierstrassA */ + + stat = asn1PE_H235ECKASDH_eckasdhp_weierstrassA (pctxt, &pvalue->weierstrassA); + if (stat != ASN_OK) return stat; + + /* encode weierstrassB */ + + stat = asn1PE_H235ECKASDH_eckasdhp_weierstrassB (pctxt, &pvalue->weierstrassB); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdh2_fieldSize */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdh2_weierstrassA */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdh2_weierstrassB */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH_eckasdh2 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue) +{ + int stat = ASN_OK; + + /* encode public_key */ + + stat = asn1PE_H235ECpoint (pctxt, &pvalue->public_key); + if (stat != ASN_OK) return stat; + + /* encode fieldSize */ + + stat = asn1PE_H235ECKASDH_eckasdh2_fieldSize (pctxt, &pvalue->fieldSize); + if (stat != ASN_OK) return stat; + + /* encode base */ + + stat = asn1PE_H235ECpoint (pctxt, &pvalue->base); + if (stat != ASN_OK) return stat; + + /* encode weierstrassA */ + + stat = asn1PE_H235ECKASDH_eckasdh2_weierstrassA (pctxt, &pvalue->weierstrassA); + if (stat != ASN_OK) return stat; + + /* encode weierstrassB */ + + stat = asn1PE_H235ECKASDH_eckasdh2_weierstrassB (pctxt, &pvalue->weierstrassB); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* ECKASDH */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 2); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* eckasdhp */ + case 1: + stat = asn1PE_H235ECKASDH_eckasdhp (pctxt, pvalue->u.eckasdhp); + if (stat != ASN_OK) return stat; + break; + + /* eckasdh2 */ + case 2: + stat = asn1PE_H235ECKASDH_eckasdh2 (pctxt, pvalue->u.eckasdh2); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ClearToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.eckasdhkeyPresent || + pvalue->m.sendersIDPresent); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.timeStampPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.passwordPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.dhkeyPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.challengePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.randomPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.certificatePresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.generalIDPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent); + + /* encode tokenOID */ + + stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID); + if (stat != ASN_OK) return stat; + + /* encode timeStamp */ + + if (pvalue->m.timeStampPresent) { + stat = asn1PE_H235TimeStamp (pctxt, pvalue->timeStamp); + if (stat != ASN_OK) return stat; + } + + /* encode password */ + + if (pvalue->m.passwordPresent) { + stat = asn1PE_H235Password (pctxt, pvalue->password); + if (stat != ASN_OK) return stat; + } + + /* encode dhkey */ + + if (pvalue->m.dhkeyPresent) { + stat = asn1PE_H235DHset (pctxt, &pvalue->dhkey); + if (stat != ASN_OK) return stat; + } + + /* encode challenge */ + + if (pvalue->m.challengePresent) { + stat = asn1PE_H235ChallengeString (pctxt, &pvalue->challenge); + if (stat != ASN_OK) return stat; + } + + /* encode random */ + + if (pvalue->m.randomPresent) { + stat = asn1PE_H235RandomVal (pctxt, pvalue->random); + if (stat != ASN_OK) return stat; + } + + /* encode certificate */ + + if (pvalue->m.certificatePresent) { + stat = asn1PE_H235TypedCertificate (pctxt, &pvalue->certificate); + if (stat != ASN_OK) return stat; + } + + /* encode generalID */ + + if (pvalue->m.generalIDPresent) { + stat = asn1PE_H235Identifier (pctxt, pvalue->generalID); + if (stat != ASN_OK) return stat; + } + + /* encode nonStandard */ + + if (pvalue->m.nonStandardPresent) { + stat = asn1PE_H235NonStandardParameter (pctxt, &pvalue->nonStandard); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 1); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.eckasdhkeyPresent); + encodeBit (pctxt, (ASN1BOOL)pvalue->m.sendersIDPresent); + /* encode extension elements */ + + if (pvalue->m.eckasdhkeyPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H235ECKASDH (&lctxt, &pvalue->eckasdhkey); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + if (pvalue->m.sendersIDPresent) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H235Identifier (&lctxt, pvalue->sendersID); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* IV8 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 8, 8, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* IV16 */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* Params */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235Params (OOCTXT* pctxt, H235Params* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + ASN1OpenType openType; + OOCTXT lctxt; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->m.iv16Present); + + encodeBit (pctxt, extbit); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.ranIntPresent); + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.iv8Present); + + /* encode ranInt */ + + if (pvalue->m.ranIntPresent) { + stat = encodeUnconsInteger (pctxt, pvalue->ranInt); + if (stat != ASN_OK) return stat; + } + + /* encode iv8 */ + + if (pvalue->m.iv8Present) { + stat = asn1PE_H235IV8 (pctxt, &pvalue->iv8); + if (stat != ASN_OK) return stat; + } + + if (extbit) { + + /* encode extension optional bits length */ + + stat = encodeSmallNonNegWholeNumber (pctxt, 0); + if (stat != ASN_OK) return stat; + + /* encode optional bits */ + + encodeBit (pctxt, (ASN1BOOL)pvalue->m.iv16Present); + /* encode extension elements */ + + if (pvalue->m.iv16Present) { + initContext (&lctxt); + stat = setPERBuffer (&lctxt, 0, 0, TRUE); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = asn1PE_H235IV16 (&lctxt, &pvalue->iv16); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + stat = encodeByteAlign (&lctxt); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts); + + stat = encodeOpenType (pctxt, openType.numocts, openType.data); + if (stat != ASN_OK) return freeContext (&lctxt), stat; + + freeContext (&lctxt); + } + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ENCRYPTED */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue) +{ + int stat = ASN_OK; + + /* encode algorithmOID */ + + stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID); + if (stat != ASN_OK) return stat; + + /* encode paramS */ + + stat = asn1PE_H235Params (pctxt, &pvalue->paramS); + if (stat != ASN_OK) return stat; + + /* encode encryptedData */ + + stat = encodeOctetString (pctxt, pvalue->encryptedData.numocts, pvalue->encryptedData.data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoToken_cryptoEncryptedToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue) +{ + int stat = ASN_OK; + + /* encode tokenOID */ + + stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID); + if (stat != ASN_OK) return stat; + + /* encode token */ + + stat = asn1PE_H235ENCRYPTED (pctxt, &pvalue->token); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncodedGeneralToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken value) +{ + int stat = ASN_OK; + + stat = encodeOpenType (pctxt, value.numocts, value.data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoToken_cryptoSignedToken_token */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue) +{ + int stat = ASN_OK; + + /* encode toBeSigned */ + + stat = asn1PE_H235EncodedGeneralToken (pctxt, pvalue->toBeSigned); + if (stat != ASN_OK) return stat; + + /* encode algorithmOID */ + + stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID); + if (stat != ASN_OK) return stat; + + /* encode paramS */ + + stat = asn1PE_H235Params (pctxt, &pvalue->paramS); + if (stat != ASN_OK) return stat; + + /* encode signature */ + + stat = encodeBitString (pctxt, pvalue->signature.numbits, pvalue->signature.data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoToken_cryptoSignedToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue) +{ + int stat = ASN_OK; + + /* encode tokenOID */ + + stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID); + if (stat != ASN_OK) return stat; + + /* encode token */ + + stat = asn1PE_H235CryptoToken_cryptoSignedToken_token (pctxt, &pvalue->token); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* HASHED */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue) +{ + int stat = ASN_OK; + + /* encode algorithmOID */ + + stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID); + if (stat != ASN_OK) return stat; + + /* encode paramS */ + + stat = asn1PE_H235Params (pctxt, &pvalue->paramS); + if (stat != ASN_OK) return stat; + + /* encode hash */ + + stat = encodeBitString (pctxt, pvalue->hash.numbits, pvalue->hash.data); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoToken_cryptoHashedToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue) +{ + int stat = ASN_OK; + + /* encode tokenOID */ + + stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID); + if (stat != ASN_OK) return stat; + + /* encode hashedVals */ + + stat = asn1PE_H235ClearToken (pctxt, &pvalue->hashedVals); + if (stat != ASN_OK) return stat; + + /* encode token */ + + stat = asn1PE_H235HASHED (pctxt, &pvalue->token); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PE_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue) +{ + int stat = ASN_OK; + ASN1BOOL extbit; + + /* extension bit */ + + extbit = (ASN1BOOL)(pvalue->t > 4); + + encodeBit (pctxt, extbit); + + if (!extbit) { + + /* Encode choice index value */ + + stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3); + if (stat != ASN_OK) return stat; + + /* Encode root element data value */ + + switch (pvalue->t) + { + /* cryptoEncryptedToken */ + case 1: + stat = asn1PE_H235CryptoToken_cryptoEncryptedToken (pctxt, pvalue->u.cryptoEncryptedToken); + if (stat != ASN_OK) return stat; + break; + + /* cryptoSignedToken */ + case 2: + stat = asn1PE_H235CryptoToken_cryptoSignedToken (pctxt, pvalue->u.cryptoSignedToken); + if (stat != ASN_OK) return stat; + break; + + /* cryptoHashedToken */ + case 3: + stat = asn1PE_H235CryptoToken_cryptoHashedToken (pctxt, pvalue->u.cryptoHashedToken); + if (stat != ASN_OK) return stat; + break; + + /* cryptoPwdEncr */ + case 4: + stat = asn1PE_H235ENCRYPTED (pctxt, pvalue->u.cryptoPwdEncr); + if (stat != ASN_OK) return stat; + break; + + default: + return ASN_E_INVOPT; + } + } + else { + /* Encode extension choice index value */ + + stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5); + if (stat != ASN_OK) return stat; + + /* Encode extension element data value */ + + } + + return (stat); +} + diff --git a/addons/ooh323c/src/h323/H323-MESSAGES.c b/addons/ooh323c/src/h323/H323-MESSAGES.c new file mode 100644 index 000000000..2c27f3b93 --- /dev/null +++ b/addons/ooh323c/src/h323/H323-MESSAGES.c @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2004-2005 by Objective Systems, Inc. + * + * This software is furnished under an open source license and may be + * used and copied only in accordance with the terms of this license. + * The text of the license may generally be found in the root + * directory of this installation in the COPYING file. It + * can also be viewed online at the following URL: + * + * http://www.obj-sys.com/open/license.html + * + * Any redistributions of this file including modified versions must + * maintain this copyright notice. + * + *****************************************************************************/ +/** + * This file was generated by the Objective Systems ASN1C Compiler + * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005. + */ +#include "ooasn1.h" +#include "H323-MESSAGES.h" + +/**************************************************************/ +/* */ +/* NumberDigits */ +/* */ +/**************************************************************/ + +EXTERN const char* gs_H323_MESSAGES_NumberDigits_CharSet = +"#*,0123456789"; + +/**************************************************************/ +/* */ +/* TBCD_STRING */ +/* */ +/**************************************************************/ + +EXTERN const char* gs_H323_MESSAGES_TBCD_STRING_CharSet = +"#*0123456789abc"; + +/**************************************************************/ +/* */ +/* ANSI_41_UIM_system_id */ +/* */ +/**************************************************************/ + +EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_sid_CharSet = +"#*0123456789abc"; + +EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_mid_CharSet = +"#*0123456789abc"; + +/**************************************************************/ +/* */ +/* ANSI_41_UIM */ +/* */ +/**************************************************************/ + +EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_imsi_CharSet = +"#*0123456789abc"; + +EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_min_CharSet = +"#*0123456789abc"; + +EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mdn_CharSet = +"#*0123456789abc"; + +EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_msisdn_CharSet = +"#*0123456789abc"; + +EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_esn_CharSet = +"#*0123456789abc"; + +EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mscid_CharSet = +"#*0123456789abc"; + +EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_sesn_CharSet = +"#*0123456789abc"; + +EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_soc_CharSet = +"#*0123456789abc"; + +/**************************************************************/ +/* */ +/* GSM_UIM */ +/* */ +/**************************************************************/ + +EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imsi_CharSet = +"#*0123456789abc"; + +EXTERN const char* gs_H323_MESSAGES_GSM_UIM_msisdn_CharSet = +"#*0123456789abc"; + +EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imei_CharSet = +"#*0123456789abc"; + +EXTERN const char* gs_H323_MESSAGES_GSM_UIM_hplmn_CharSet = +"#*0123456789abc"; + +EXTERN const char* gs_H323_MESSAGES_GSM_UIM_vplmn_CharSet = +"#*0123456789abc"; + +/**************************************************************/ +/* */ +/* AliasAddress */ +/* */ +/**************************************************************/ + +EXTERN const char* gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet = +"#*,0123456789"; + diff --git a/addons/ooh323c/src/h323/H323-MESSAGES.h b/addons/ooh323c/src/h323/H323-MESSAGES.h new file mode 100644 index 000000000..fbd87b336 --- /dev/null +++ b/addons/ooh323c/src/h323/H323-MESSAGES.h @@ -0,0 +1,6510 @@ +/* + * Copyright (C) 2004-2005 by Objective Systems, Inc. + * + * This software is furnished under an open source license and may be + * used and copied only in accordance with the terms of this license. + * The text of the license may generally be found in the root + * directory of this installation in the COPYING file. It + * can also be viewed online at the following URL: + * + * http://www.obj-sys.com/open/license.html + * + * Any redistributions of this file including modified versions must + * maintain this copyright notice. + * + *****************************************************************************/ +/** + * This file was generated by the Objective Systems ASN1C Compiler + * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005. + */ +#ifndef H323_MESSAGES_H +#define H323_MESSAGES_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdio.h> +#include <stdlib.h> + +#include "ooasn1.h" +#include "H235-SECURITY-MESSAGES.h" +#include "MULTIMEDIA-SYSTEM-CONTROL.h" + +/**************************************************************/ +/* */ +/* ScreeningIndicator */ +/* */ +/**************************************************************/ + +typedef enum { + userProvidedNotScreened = 0, + userProvidedVerifiedAndPassed = 1, + userProvidedVerifiedAndFailed = 2, + networkProvided = 3 +} H225ScreeningIndicator_Root; + +typedef ASN1UINT H225ScreeningIndicator; + +EXTERN int asn1PE_H225ScreeningIndicator (OOCTXT* pctxt, H225ScreeningIndicator value); + +EXTERN int asn1PD_H225ScreeningIndicator (OOCTXT* pctxt, H225ScreeningIndicator* pvalue); + +/**************************************************************/ +/* */ +/* NumberDigits */ +/* */ +/**************************************************************/ + +typedef ASN1IA5String H225NumberDigits; + +EXTERN int asn1PE_H225NumberDigits (OOCTXT* pctxt, H225NumberDigits value); + +EXTERN int asn1PD_H225NumberDigits (OOCTXT* pctxt, H225NumberDigits* pvalue); + +/**************************************************************/ +/* */ +/* TBCD_STRING */ +/* */ +/**************************************************************/ + +typedef ASN1IA5String H225TBCD_STRING; + +EXTERN int asn1PE_H225TBCD_STRING (OOCTXT* pctxt, H225TBCD_STRING value); + +EXTERN int asn1PD_H225TBCD_STRING (OOCTXT* pctxt, H225TBCD_STRING* pvalue); + +/**************************************************************/ +/* */ +/* GloballyUniqueID */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225GloballyUniqueID { + ASN1UINT numocts; + ASN1OCTET data[16]; +} H225GloballyUniqueID; + +EXTERN int asn1PE_H225GloballyUniqueID (OOCTXT* pctxt, H225GloballyUniqueID* pvalue); + +EXTERN int asn1PD_H225GloballyUniqueID (OOCTXT* pctxt, H225GloballyUniqueID* pvalue); + +/**************************************************************/ +/* */ +/* ConferenceIdentifier */ +/* */ +/**************************************************************/ + +typedef H225GloballyUniqueID H225ConferenceIdentifier; + +EXTERN int asn1PE_H225ConferenceIdentifier (OOCTXT* pctxt, H225ConferenceIdentifier* pvalue); + +EXTERN int asn1PD_H225ConferenceIdentifier (OOCTXT* pctxt, H225ConferenceIdentifier* pvalue); + +/**************************************************************/ +/* */ +/* RequestSeqNum */ +/* */ +/**************************************************************/ + +typedef ASN1USINT H225RequestSeqNum; + +EXTERN int asn1PE_H225RequestSeqNum (OOCTXT* pctxt, H225RequestSeqNum value); + +EXTERN int asn1PD_H225RequestSeqNum (OOCTXT* pctxt, H225RequestSeqNum* pvalue); + +/**************************************************************/ +/* */ +/* GatekeeperIdentifier */ +/* */ +/**************************************************************/ + +typedef ASN1BMPString H225GatekeeperIdentifier; + +EXTERN int asn1PE_H225GatekeeperIdentifier (OOCTXT* pctxt, H225GatekeeperIdentifier value); + +EXTERN int asn1PD_H225GatekeeperIdentifier (OOCTXT* pctxt, H225GatekeeperIdentifier* pvalue); + +/**************************************************************/ +/* */ +/* BandWidth */ +/* */ +/**************************************************************/ + +typedef ASN1UINT H225BandWidth; + +EXTERN int asn1PE_H225BandWidth (OOCTXT* pctxt, H225BandWidth value); + +EXTERN int asn1PD_H225BandWidth (OOCTXT* pctxt, H225BandWidth* pvalue); + +/**************************************************************/ +/* */ +/* CallReferenceValue */ +/* */ +/**************************************************************/ + +typedef ASN1USINT H225CallReferenceValue; + +EXTERN int asn1PE_H225CallReferenceValue (OOCTXT* pctxt, H225CallReferenceValue value); + +EXTERN int asn1PD_H225CallReferenceValue (OOCTXT* pctxt, H225CallReferenceValue* pvalue); + +/**************************************************************/ +/* */ +/* EndpointIdentifier */ +/* */ +/**************************************************************/ + +typedef ASN1BMPString H225EndpointIdentifier; + +EXTERN int asn1PE_H225EndpointIdentifier (OOCTXT* pctxt, H225EndpointIdentifier value); + +EXTERN int asn1PD_H225EndpointIdentifier (OOCTXT* pctxt, H225EndpointIdentifier* pvalue); + +/**************************************************************/ +/* */ +/* ProtocolIdentifier */ +/* */ +/**************************************************************/ + +typedef ASN1OBJID H225ProtocolIdentifier; + +EXTERN int asn1PE_H225ProtocolIdentifier (OOCTXT* pctxt, H225ProtocolIdentifier value); + +EXTERN int asn1PD_H225ProtocolIdentifier (OOCTXT* pctxt, H225ProtocolIdentifier* pvalue); + +/**************************************************************/ +/* */ +/* TimeToLive */ +/* */ +/**************************************************************/ + +typedef ASN1UINT H225TimeToLive; + +EXTERN int asn1PE_H225TimeToLive (OOCTXT* pctxt, H225TimeToLive value); + +EXTERN int asn1PD_H225TimeToLive (OOCTXT* pctxt, H225TimeToLive* pvalue); + +/**************************************************************/ +/* */ +/* H248PackagesDescriptor */ +/* */ +/**************************************************************/ + +typedef ASN1DynOctStr H225H248PackagesDescriptor; + +EXTERN int asn1PE_H225H248PackagesDescriptor (OOCTXT* pctxt, H225H248PackagesDescriptor value); + +EXTERN int asn1PD_H225H248PackagesDescriptor (OOCTXT* pctxt, H225H248PackagesDescriptor* pvalue); + +/**************************************************************/ +/* */ +/* H248SignalsDescriptor */ +/* */ +/**************************************************************/ + +typedef ASN1DynOctStr H225H248SignalsDescriptor; + +EXTERN int asn1PE_H225H248SignalsDescriptor (OOCTXT* pctxt, H225H248SignalsDescriptor value); + +EXTERN int asn1PD_H225H248SignalsDescriptor (OOCTXT* pctxt, H225H248SignalsDescriptor* pvalue); + +/**************************************************************/ +/* */ +/* GenericIdentifier */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225GenericIdentifier_standard 1 +#define T_H225GenericIdentifier_oid 2 +#define T_H225GenericIdentifier_nonStandard 3 +#define T_H225GenericIdentifier_extElem1 4 + +typedef struct EXTERN H225GenericIdentifier { + int t; + union { + /* t = 1 */ + ASN1INT standard; + /* t = 2 */ + ASN1OBJID *oid; + /* t = 3 */ + H225GloballyUniqueID *nonStandard; + /* t = 4 */ + } u; +} H225GenericIdentifier; + +EXTERN int asn1PE_H225GenericIdentifier (OOCTXT* pctxt, H225GenericIdentifier* pvalue); + +EXTERN int asn1PD_H225GenericIdentifier (OOCTXT* pctxt, H225GenericIdentifier* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_ipAddress_ip */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_ipAddress_ip { + ASN1UINT numocts; + ASN1OCTET data[4]; +} H225TransportAddress_ipAddress_ip; + +EXTERN int asn1PE_H225TransportAddress_ipAddress_ip (OOCTXT* pctxt, H225TransportAddress_ipAddress_ip* pvalue); + +EXTERN int asn1PD_H225TransportAddress_ipAddress_ip (OOCTXT* pctxt, H225TransportAddress_ipAddress_ip* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_ipAddress */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_ipAddress { + H225TransportAddress_ipAddress_ip ip; + ASN1USINT port; +} H225TransportAddress_ipAddress; + +EXTERN int asn1PE_H225TransportAddress_ipAddress (OOCTXT* pctxt, H225TransportAddress_ipAddress* pvalue); + +EXTERN int asn1PD_H225TransportAddress_ipAddress (OOCTXT* pctxt, H225TransportAddress_ipAddress* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_ipSourceRoute_ip */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_ipSourceRoute_ip { + ASN1UINT numocts; + ASN1OCTET data[4]; +} H225TransportAddress_ipSourceRoute_ip; + +EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_ip (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_ip* pvalue); + +EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_ip (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_ip* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_ipSourceRoute_route_element */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_ipSourceRoute_route_element { + ASN1UINT numocts; + ASN1OCTET data[4]; +} H225TransportAddress_ipSourceRoute_route_element; + +EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_route_element* pvalue); + +EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_route_element* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225TransportAddress_ipSourceRoute_route_element */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225_SeqOfH225TransportAddress_ipSourceRoute_route_element { + ASN1UINT n; + H225TransportAddress_ipSourceRoute_route_element *elem; +} H225_SeqOfH225TransportAddress_ipSourceRoute_route_element; + +EXTERN int asn1PE_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225_SeqOfH225TransportAddress_ipSourceRoute_route_element* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225_SeqOfH225TransportAddress_ipSourceRoute_route_element* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_ipSourceRoute_routing */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225TransportAddress_ipSourceRoute_routing_strict 1 +#define T_H225TransportAddress_ipSourceRoute_routing_loose 2 +#define T_H225TransportAddress_ipSourceRoute_routing_extElem1 3 + +typedef struct EXTERN H225TransportAddress_ipSourceRoute_routing { + int t; +} H225TransportAddress_ipSourceRoute_routing; + +EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_routing (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_routing* pvalue); + +EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_routing (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_routing* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_ipSourceRoute */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_ipSourceRoute { + H225TransportAddress_ipSourceRoute_ip ip; + ASN1USINT port; + H225_SeqOfH225TransportAddress_ipSourceRoute_route_element route; + H225TransportAddress_ipSourceRoute_routing routing; +} H225TransportAddress_ipSourceRoute; + +EXTERN int asn1PE_H225TransportAddress_ipSourceRoute (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute* pvalue); + +EXTERN int asn1PD_H225TransportAddress_ipSourceRoute (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_ipxAddress_node */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_ipxAddress_node { + ASN1UINT numocts; + ASN1OCTET data[6]; +} H225TransportAddress_ipxAddress_node; + +EXTERN int asn1PE_H225TransportAddress_ipxAddress_node (OOCTXT* pctxt, H225TransportAddress_ipxAddress_node* pvalue); + +EXTERN int asn1PD_H225TransportAddress_ipxAddress_node (OOCTXT* pctxt, H225TransportAddress_ipxAddress_node* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_ipxAddress_netnum */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_ipxAddress_netnum { + ASN1UINT numocts; + ASN1OCTET data[4]; +} H225TransportAddress_ipxAddress_netnum; + +EXTERN int asn1PE_H225TransportAddress_ipxAddress_netnum (OOCTXT* pctxt, H225TransportAddress_ipxAddress_netnum* pvalue); + +EXTERN int asn1PD_H225TransportAddress_ipxAddress_netnum (OOCTXT* pctxt, H225TransportAddress_ipxAddress_netnum* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_ipxAddress_port */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_ipxAddress_port { + ASN1UINT numocts; + ASN1OCTET data[2]; +} H225TransportAddress_ipxAddress_port; + +EXTERN int asn1PE_H225TransportAddress_ipxAddress_port (OOCTXT* pctxt, H225TransportAddress_ipxAddress_port* pvalue); + +EXTERN int asn1PD_H225TransportAddress_ipxAddress_port (OOCTXT* pctxt, H225TransportAddress_ipxAddress_port* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_ipxAddress */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_ipxAddress { + H225TransportAddress_ipxAddress_node node; + H225TransportAddress_ipxAddress_netnum netnum; + H225TransportAddress_ipxAddress_port port; +} H225TransportAddress_ipxAddress; + +EXTERN int asn1PE_H225TransportAddress_ipxAddress (OOCTXT* pctxt, H225TransportAddress_ipxAddress* pvalue); + +EXTERN int asn1PD_H225TransportAddress_ipxAddress (OOCTXT* pctxt, H225TransportAddress_ipxAddress* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_ip6Address_ip */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_ip6Address_ip { + ASN1UINT numocts; + ASN1OCTET data[16]; +} H225TransportAddress_ip6Address_ip; + +EXTERN int asn1PE_H225TransportAddress_ip6Address_ip (OOCTXT* pctxt, H225TransportAddress_ip6Address_ip* pvalue); + +EXTERN int asn1PD_H225TransportAddress_ip6Address_ip (OOCTXT* pctxt, H225TransportAddress_ip6Address_ip* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_ip6Address */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_ip6Address { + H225TransportAddress_ip6Address_ip ip; + ASN1USINT port; +} H225TransportAddress_ip6Address; + +EXTERN int asn1PE_H225TransportAddress_ip6Address (OOCTXT* pctxt, H225TransportAddress_ip6Address* pvalue); + +EXTERN int asn1PD_H225TransportAddress_ip6Address (OOCTXT* pctxt, H225TransportAddress_ip6Address* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_netBios */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_netBios { + ASN1UINT numocts; + ASN1OCTET data[16]; +} H225TransportAddress_netBios; + +EXTERN int asn1PE_H225TransportAddress_netBios (OOCTXT* pctxt, H225TransportAddress_netBios* pvalue); + +EXTERN int asn1PD_H225TransportAddress_netBios (OOCTXT* pctxt, H225TransportAddress_netBios* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress_nsap */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportAddress_nsap { + ASN1UINT numocts; + ASN1OCTET data[20]; +} H225TransportAddress_nsap; + +EXTERN int asn1PE_H225TransportAddress_nsap (OOCTXT* pctxt, H225TransportAddress_nsap* pvalue); + +EXTERN int asn1PD_H225TransportAddress_nsap (OOCTXT* pctxt, H225TransportAddress_nsap* pvalue); + +/**************************************************************/ +/* */ +/* H221NonStandard */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H221NonStandard { + ASN1UINT8 t35CountryCode; + ASN1UINT8 t35Extension; + ASN1USINT manufacturerCode; +} H225H221NonStandard; + +EXTERN int asn1PE_H225H221NonStandard (OOCTXT* pctxt, H225H221NonStandard* pvalue); + +EXTERN int asn1PD_H225H221NonStandard (OOCTXT* pctxt, H225H221NonStandard* pvalue); + +/**************************************************************/ +/* */ +/* NonStandardIdentifier */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225NonStandardIdentifier_object 1 +#define T_H225NonStandardIdentifier_h221NonStandard 2 +#define T_H225NonStandardIdentifier_extElem1 3 + +typedef struct EXTERN H225NonStandardIdentifier { + int t; + union { + /* t = 1 */ + ASN1OBJID *object; + /* t = 2 */ + H225H221NonStandard *h221NonStandard; + /* t = 3 */ + } u; +} H225NonStandardIdentifier; + +EXTERN int asn1PE_H225NonStandardIdentifier (OOCTXT* pctxt, H225NonStandardIdentifier* pvalue); + +EXTERN int asn1PD_H225NonStandardIdentifier (OOCTXT* pctxt, H225NonStandardIdentifier* pvalue); + +/**************************************************************/ +/* */ +/* NonStandardParameter */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225NonStandardParameter { + H225NonStandardIdentifier nonStandardIdentifier; + ASN1DynOctStr data; +} H225NonStandardParameter; + +EXTERN int asn1PE_H225NonStandardParameter (OOCTXT* pctxt, H225NonStandardParameter* pvalue); + +EXTERN int asn1PD_H225NonStandardParameter (OOCTXT* pctxt, H225NonStandardParameter* pvalue); + +/**************************************************************/ +/* */ +/* TransportAddress */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225TransportAddress_ipAddress 1 +#define T_H225TransportAddress_ipSourceRoute 2 +#define T_H225TransportAddress_ipxAddress 3 +#define T_H225TransportAddress_ip6Address 4 +#define T_H225TransportAddress_netBios 5 +#define T_H225TransportAddress_nsap 6 +#define T_H225TransportAddress_nonStandardAddress 7 +#define T_H225TransportAddress_extElem1 8 + +typedef struct EXTERN H225TransportAddress { + int t; + union { + /* t = 1 */ + H225TransportAddress_ipAddress *ipAddress; + /* t = 2 */ + H225TransportAddress_ipSourceRoute *ipSourceRoute; + /* t = 3 */ + H225TransportAddress_ipxAddress *ipxAddress; + /* t = 4 */ + H225TransportAddress_ip6Address *ip6Address; + /* t = 5 */ + H225TransportAddress_netBios *netBios; + /* t = 6 */ + H225TransportAddress_nsap *nsap; + /* t = 7 */ + H225NonStandardParameter *nonStandardAddress; + /* t = 8 */ + } u; +} H225TransportAddress; + +EXTERN int asn1PE_H225TransportAddress (OOCTXT* pctxt, H225TransportAddress* pvalue); + +EXTERN int asn1PD_H225TransportAddress (OOCTXT* pctxt, H225TransportAddress* pvalue); + +/**************************************************************/ +/* */ +/* PublicTypeOfNumber */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225PublicTypeOfNumber_unknown 1 +#define T_H225PublicTypeOfNumber_internationalNumber 2 +#define T_H225PublicTypeOfNumber_nationalNumber 3 +#define T_H225PublicTypeOfNumber_networkSpecificNumber 4 +#define T_H225PublicTypeOfNumber_subscriberNumber 5 +#define T_H225PublicTypeOfNumber_abbreviatedNumber 6 +#define T_H225PublicTypeOfNumber_extElem1 7 + +typedef struct EXTERN H225PublicTypeOfNumber { + int t; +} H225PublicTypeOfNumber; + +EXTERN int asn1PE_H225PublicTypeOfNumber (OOCTXT* pctxt, H225PublicTypeOfNumber* pvalue); + +EXTERN int asn1PD_H225PublicTypeOfNumber (OOCTXT* pctxt, H225PublicTypeOfNumber* pvalue); + +/**************************************************************/ +/* */ +/* PublicPartyNumber */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225PublicPartyNumber { + H225PublicTypeOfNumber publicTypeOfNumber; + H225NumberDigits publicNumberDigits; +} H225PublicPartyNumber; + +EXTERN int asn1PE_H225PublicPartyNumber (OOCTXT* pctxt, H225PublicPartyNumber* pvalue); + +EXTERN int asn1PD_H225PublicPartyNumber (OOCTXT* pctxt, H225PublicPartyNumber* pvalue); + +/**************************************************************/ +/* */ +/* PrivateTypeOfNumber */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225PrivateTypeOfNumber_unknown 1 +#define T_H225PrivateTypeOfNumber_level2RegionalNumber 2 +#define T_H225PrivateTypeOfNumber_level1RegionalNumber 3 +#define T_H225PrivateTypeOfNumber_pISNSpecificNumber 4 +#define T_H225PrivateTypeOfNumber_localNumber 5 +#define T_H225PrivateTypeOfNumber_abbreviatedNumber 6 +#define T_H225PrivateTypeOfNumber_extElem1 7 + +typedef struct EXTERN H225PrivateTypeOfNumber { + int t; +} H225PrivateTypeOfNumber; + +EXTERN int asn1PE_H225PrivateTypeOfNumber (OOCTXT* pctxt, H225PrivateTypeOfNumber* pvalue); + +EXTERN int asn1PD_H225PrivateTypeOfNumber (OOCTXT* pctxt, H225PrivateTypeOfNumber* pvalue); + +/**************************************************************/ +/* */ +/* PrivatePartyNumber */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225PrivatePartyNumber { + H225PrivateTypeOfNumber privateTypeOfNumber; + H225NumberDigits privateNumberDigits; +} H225PrivatePartyNumber; + +EXTERN int asn1PE_H225PrivatePartyNumber (OOCTXT* pctxt, H225PrivatePartyNumber* pvalue); + +EXTERN int asn1PD_H225PrivatePartyNumber (OOCTXT* pctxt, H225PrivatePartyNumber* pvalue); + +/**************************************************************/ +/* */ +/* PartyNumber */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225PartyNumber_e164Number 1 +#define T_H225PartyNumber_dataPartyNumber 2 +#define T_H225PartyNumber_telexPartyNumber 3 +#define T_H225PartyNumber_privateNumber 4 +#define T_H225PartyNumber_nationalStandardPartyNumber 5 +#define T_H225PartyNumber_extElem1 6 + +typedef struct EXTERN H225PartyNumber { + int t; + union { + /* t = 1 */ + H225PublicPartyNumber *e164Number; + /* t = 2 */ + H225NumberDigits dataPartyNumber; + /* t = 3 */ + H225NumberDigits telexPartyNumber; + /* t = 4 */ + H225PrivatePartyNumber *privateNumber; + /* t = 5 */ + H225NumberDigits nationalStandardPartyNumber; + /* t = 6 */ + } u; +} H225PartyNumber; + +EXTERN int asn1PE_H225PartyNumber (OOCTXT* pctxt, H225PartyNumber* pvalue); + +EXTERN int asn1PD_H225PartyNumber (OOCTXT* pctxt, H225PartyNumber* pvalue); + +/**************************************************************/ +/* */ +/* ANSI_41_UIM_system_id */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225ANSI_41_UIM_system_id_sid 1 +#define T_H225ANSI_41_UIM_system_id_mid 2 +#define T_H225ANSI_41_UIM_system_id_extElem1 3 + +typedef struct EXTERN H225ANSI_41_UIM_system_id { + int t; + union { + /* t = 1 */ + ASN1IA5String sid; + /* t = 2 */ + ASN1IA5String mid; + /* t = 3 */ + } u; +} H225ANSI_41_UIM_system_id; + +EXTERN int asn1PE_H225ANSI_41_UIM_system_id (OOCTXT* pctxt, H225ANSI_41_UIM_system_id* pvalue); + +EXTERN int asn1PD_H225ANSI_41_UIM_system_id (OOCTXT* pctxt, H225ANSI_41_UIM_system_id* pvalue); + +/**************************************************************/ +/* */ +/* ANSI_41_UIM_systemMyTypeCode */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ANSI_41_UIM_systemMyTypeCode { + ASN1UINT numocts; + ASN1OCTET data[1]; +} H225ANSI_41_UIM_systemMyTypeCode; + +EXTERN int asn1PE_H225ANSI_41_UIM_systemMyTypeCode (OOCTXT* pctxt, H225ANSI_41_UIM_systemMyTypeCode* pvalue); + +EXTERN int asn1PD_H225ANSI_41_UIM_systemMyTypeCode (OOCTXT* pctxt, H225ANSI_41_UIM_systemMyTypeCode* pvalue); + +/**************************************************************/ +/* */ +/* ANSI_41_UIM_systemAccessType */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ANSI_41_UIM_systemAccessType { + ASN1UINT numocts; + ASN1OCTET data[1]; +} H225ANSI_41_UIM_systemAccessType; + +EXTERN int asn1PE_H225ANSI_41_UIM_systemAccessType (OOCTXT* pctxt, H225ANSI_41_UIM_systemAccessType* pvalue); + +EXTERN int asn1PD_H225ANSI_41_UIM_systemAccessType (OOCTXT* pctxt, H225ANSI_41_UIM_systemAccessType* pvalue); + +/**************************************************************/ +/* */ +/* ANSI_41_UIM_qualificationInformationCode */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ANSI_41_UIM_qualificationInformationCode { + ASN1UINT numocts; + ASN1OCTET data[1]; +} H225ANSI_41_UIM_qualificationInformationCode; + +EXTERN int asn1PE_H225ANSI_41_UIM_qualificationInformationCode (OOCTXT* pctxt, H225ANSI_41_UIM_qualificationInformationCode* pvalue); + +EXTERN int asn1PD_H225ANSI_41_UIM_qualificationInformationCode (OOCTXT* pctxt, H225ANSI_41_UIM_qualificationInformationCode* pvalue); + +/**************************************************************/ +/* */ +/* ANSI_41_UIM */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ANSI_41_UIM { + struct { + unsigned imsiPresent : 1; + unsigned minPresent : 1; + unsigned mdnPresent : 1; + unsigned msisdnPresent : 1; + unsigned esnPresent : 1; + unsigned mscidPresent : 1; + unsigned systemMyTypeCodePresent : 1; + unsigned systemAccessTypePresent : 1; + unsigned qualificationInformationCodePresent : 1; + unsigned sesnPresent : 1; + unsigned socPresent : 1; + } m; + ASN1IA5String imsi; + ASN1IA5String min; + ASN1IA5String mdn; + ASN1IA5String msisdn; + ASN1IA5String esn; + ASN1IA5String mscid; + H225ANSI_41_UIM_system_id system_id; + H225ANSI_41_UIM_systemMyTypeCode systemMyTypeCode; + H225ANSI_41_UIM_systemAccessType systemAccessType; + H225ANSI_41_UIM_qualificationInformationCode qualificationInformationCode; + ASN1IA5String sesn; + ASN1IA5String soc; +} H225ANSI_41_UIM; + +EXTERN int asn1PE_H225ANSI_41_UIM (OOCTXT* pctxt, H225ANSI_41_UIM* pvalue); + +EXTERN int asn1PD_H225ANSI_41_UIM (OOCTXT* pctxt, H225ANSI_41_UIM* pvalue); + +/**************************************************************/ +/* */ +/* GSM_UIM_tmsi */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225GSM_UIM_tmsi { + ASN1UINT numocts; + ASN1OCTET data[4]; +} H225GSM_UIM_tmsi; + +EXTERN int asn1PE_H225GSM_UIM_tmsi (OOCTXT* pctxt, H225GSM_UIM_tmsi* pvalue); + +EXTERN int asn1PD_H225GSM_UIM_tmsi (OOCTXT* pctxt, H225GSM_UIM_tmsi* pvalue); + +/**************************************************************/ +/* */ +/* GSM_UIM */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225GSM_UIM { + struct { + unsigned imsiPresent : 1; + unsigned tmsiPresent : 1; + unsigned msisdnPresent : 1; + unsigned imeiPresent : 1; + unsigned hplmnPresent : 1; + unsigned vplmnPresent : 1; + } m; + ASN1IA5String imsi; + H225GSM_UIM_tmsi tmsi; + ASN1IA5String msisdn; + ASN1IA5String imei; + ASN1IA5String hplmn; + ASN1IA5String vplmn; +} H225GSM_UIM; + +EXTERN int asn1PE_H225GSM_UIM (OOCTXT* pctxt, H225GSM_UIM* pvalue); + +EXTERN int asn1PD_H225GSM_UIM (OOCTXT* pctxt, H225GSM_UIM* pvalue); + +/**************************************************************/ +/* */ +/* MobileUIM */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225MobileUIM_ansi_41_uim 1 +#define T_H225MobileUIM_gsm_uim 2 +#define T_H225MobileUIM_extElem1 3 + +typedef struct EXTERN H225MobileUIM { + int t; + union { + /* t = 1 */ + H225ANSI_41_UIM *ansi_41_uim; + /* t = 2 */ + H225GSM_UIM *gsm_uim; + /* t = 3 */ + } u; +} H225MobileUIM; + +EXTERN int asn1PE_H225MobileUIM (OOCTXT* pctxt, H225MobileUIM* pvalue); + +EXTERN int asn1PD_H225MobileUIM (OOCTXT* pctxt, H225MobileUIM* pvalue); + +/**************************************************************/ +/* */ +/* AliasAddress */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225AliasAddress_dialedDigits 1 +#define T_H225AliasAddress_h323_ID 2 +#define T_H225AliasAddress_url_ID 3 +#define T_H225AliasAddress_transportID 4 +#define T_H225AliasAddress_email_ID 5 +#define T_H225AliasAddress_partyNumber 6 +#define T_H225AliasAddress_mobileUIM 7 +#define T_H225AliasAddress_extElem1 8 + +typedef struct EXTERN H225AliasAddress { + int t; + union { + /* t = 1 */ + ASN1IA5String dialedDigits; + /* t = 2 */ + ASN1BMPString h323_ID; + /* t = 3 */ + ASN1IA5String url_ID; + /* t = 4 */ + H225TransportAddress *transportID; + /* t = 5 */ + ASN1IA5String email_ID; + /* t = 6 */ + H225PartyNumber *partyNumber; + /* t = 7 */ + H225MobileUIM *mobileUIM; + /* t = 8 */ + } u; +} H225AliasAddress; + +EXTERN int asn1PE_H225AliasAddress (OOCTXT* pctxt, H225AliasAddress* pvalue); + +EXTERN int asn1PD_H225AliasAddress (OOCTXT* pctxt, H225AliasAddress* pvalue); + +/**************************************************************/ +/* */ +/* Content_compound */ +/* */ +/**************************************************************/ + +/* List of H225EnumeratedParameter */ +typedef DList H225Content_compound; + +EXTERN int asn1PE_H225Content_compound (OOCTXT* pctxt, H225Content_compound* pvalue); + +EXTERN int asn1PD_H225Content_compound (OOCTXT* pctxt, H225Content_compound* pvalue); + +/**************************************************************/ +/* */ +/* Content_nested */ +/* */ +/**************************************************************/ + +/* List of H225GenericData */ +typedef DList H225Content_nested; + +EXTERN int asn1PE_H225Content_nested (OOCTXT* pctxt, H225Content_nested* pvalue); + +EXTERN int asn1PD_H225Content_nested (OOCTXT* pctxt, H225Content_nested* pvalue); + +/**************************************************************/ +/* */ +/* Content */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225Content_raw 1 +#define T_H225Content_text 2 +#define T_H225Content_unicode 3 +#define T_H225Content_bool_ 4 +#define T_H225Content_number8 5 +#define T_H225Content_number16 6 +#define T_H225Content_number32 7 +#define T_H225Content_id 8 +#define T_H225Content_alias 9 +#define T_H225Content_transport 10 +#define T_H225Content_compound 11 +#define T_H225Content_nested 12 +#define T_H225Content_extElem1 13 + +typedef struct EXTERN H225Content { + int t; + union { + /* t = 1 */ + ASN1DynOctStr *raw; + /* t = 2 */ + ASN1IA5String text; + /* t = 3 */ + ASN1BMPString unicode; + /* t = 4 */ + ASN1BOOL bool_; + /* t = 5 */ + ASN1UINT8 number8; + /* t = 6 */ + ASN1USINT number16; + /* t = 7 */ + ASN1UINT number32; + /* t = 8 */ + H225GenericIdentifier *id; + /* t = 9 */ + H225AliasAddress *alias; + /* t = 10 */ + H225TransportAddress *transport; + /* t = 11 */ + H225Content_compound *compound; + /* t = 12 */ + H225Content_nested *nested; + /* t = 13 */ + } u; +} H225Content; + +EXTERN int asn1PE_H225Content (OOCTXT* pctxt, H225Content* pvalue); + +EXTERN int asn1PD_H225Content (OOCTXT* pctxt, H225Content* pvalue); + +/**************************************************************/ +/* */ +/* EnumeratedParameter */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225EnumeratedParameter { + struct { + unsigned contentPresent : 1; + } m; + H225GenericIdentifier id; + H225Content content; +} H225EnumeratedParameter; + +EXTERN int asn1PE_H225EnumeratedParameter (OOCTXT* pctxt, H225EnumeratedParameter* pvalue); + +EXTERN int asn1PD_H225EnumeratedParameter (OOCTXT* pctxt, H225EnumeratedParameter* pvalue); + +/**************************************************************/ +/* */ +/* GenericData_parameters */ +/* */ +/**************************************************************/ + +/* List of H225EnumeratedParameter */ +typedef DList H225GenericData_parameters; + +EXTERN int asn1PE_H225GenericData_parameters (OOCTXT* pctxt, H225GenericData_parameters* pvalue); + +EXTERN int asn1PD_H225GenericData_parameters (OOCTXT* pctxt, H225GenericData_parameters* pvalue); + +/**************************************************************/ +/* */ +/* GenericData */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225GenericData { + struct { + unsigned parametersPresent : 1; + } m; + H225GenericIdentifier id; + H225GenericData_parameters parameters; +} H225GenericData; + +EXTERN int asn1PE_H225GenericData (OOCTXT* pctxt, H225GenericData* pvalue); + +EXTERN int asn1PD_H225GenericData (OOCTXT* pctxt, H225GenericData* pvalue); + +/**************************************************************/ +/* */ +/* FeatureDescriptor */ +/* */ +/**************************************************************/ + +typedef H225GenericData H225FeatureDescriptor; + +EXTERN int asn1PE_H225FeatureDescriptor (OOCTXT* pctxt, H225FeatureDescriptor* pvalue); + +EXTERN int asn1PD_H225FeatureDescriptor (OOCTXT* pctxt, H225FeatureDescriptor* pvalue); + +/**************************************************************/ +/* */ +/* FastStartToken */ +/* */ +/**************************************************************/ + +typedef H235ClearToken H225FastStartToken; + +EXTERN int asn1PE_H225FastStartToken (OOCTXT* pctxt, H225FastStartToken* pvalue); + +EXTERN int asn1PD_H225FastStartToken (OOCTXT* pctxt, H225FastStartToken* pvalue); + +/**************************************************************/ +/* */ +/* EncodedFastStartToken */ +/* */ +/**************************************************************/ + +typedef ASN1OpenType H225EncodedFastStartToken; + +EXTERN int asn1PE_H225EncodedFastStartToken (OOCTXT* pctxt, H225EncodedFastStartToken value); + +EXTERN int asn1PD_H225EncodedFastStartToken (OOCTXT* pctxt, H225EncodedFastStartToken* pvalue); + +/**************************************************************/ +/* */ +/* H323_UserInformation_user_data_user_information */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H323_UserInformation_user_data_user_information { + ASN1UINT numocts; + ASN1OCTET data[131]; +} H225H323_UserInformation_user_data_user_information; + +EXTERN int asn1PE_H225H323_UserInformation_user_data_user_information (OOCTXT* pctxt, H225H323_UserInformation_user_data_user_information* pvalue); + +EXTERN int asn1PD_H225H323_UserInformation_user_data_user_information (OOCTXT* pctxt, H225H323_UserInformation_user_data_user_information* pvalue); + +/**************************************************************/ +/* */ +/* EndpointType_set */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225EndpointType_set { + ASN1UINT numbits; + ASN1OCTET data[4]; +} H225EndpointType_set; + +EXTERN int asn1PE_H225EndpointType_set (OOCTXT* pctxt, H225EndpointType_set* pvalue); + +EXTERN int asn1PD_H225EndpointType_set (OOCTXT* pctxt, H225EndpointType_set* pvalue); + +/**************************************************************/ +/* */ +/* VendorIdentifier_productId */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225VendorIdentifier_productId { + ASN1UINT numocts; + ASN1OCTET data[256]; +} H225VendorIdentifier_productId; + +EXTERN int asn1PE_H225VendorIdentifier_productId (OOCTXT* pctxt, H225VendorIdentifier_productId* pvalue); + +EXTERN int asn1PD_H225VendorIdentifier_productId (OOCTXT* pctxt, H225VendorIdentifier_productId* pvalue); + +/**************************************************************/ +/* */ +/* VendorIdentifier_versionId */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225VendorIdentifier_versionId { + ASN1UINT numocts; + ASN1OCTET data[256]; +} H225VendorIdentifier_versionId; + +EXTERN int asn1PE_H225VendorIdentifier_versionId (OOCTXT* pctxt, H225VendorIdentifier_versionId* pvalue); + +EXTERN int asn1PD_H225VendorIdentifier_versionId (OOCTXT* pctxt, H225VendorIdentifier_versionId* pvalue); + +/**************************************************************/ +/* */ +/* CicInfo_cic_element */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CicInfo_cic_element { + ASN1UINT numocts; + ASN1OCTET data[4]; +} H225CicInfo_cic_element; + +EXTERN int asn1PE_H225CicInfo_cic_element (OOCTXT* pctxt, H225CicInfo_cic_element* pvalue); + +EXTERN int asn1PD_H225CicInfo_cic_element (OOCTXT* pctxt, H225CicInfo_cic_element* pvalue); + +/**************************************************************/ +/* */ +/* CicInfo_pointCode */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CicInfo_pointCode { + ASN1UINT numocts; + ASN1OCTET data[5]; +} H225CicInfo_pointCode; + +EXTERN int asn1PE_H225CicInfo_pointCode (OOCTXT* pctxt, H225CicInfo_pointCode* pvalue); + +EXTERN int asn1PD_H225CicInfo_pointCode (OOCTXT* pctxt, H225CicInfo_pointCode* pvalue); + +/**************************************************************/ +/* */ +/* CarrierInfo_carrierIdentificationCode */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CarrierInfo_carrierIdentificationCode { + ASN1UINT numocts; + ASN1OCTET data[4]; +} H225CarrierInfo_carrierIdentificationCode; + +EXTERN int asn1PE_H225CarrierInfo_carrierIdentificationCode (OOCTXT* pctxt, H225CarrierInfo_carrierIdentificationCode* pvalue); + +EXTERN int asn1PD_H225CarrierInfo_carrierIdentificationCode (OOCTXT* pctxt, H225CarrierInfo_carrierIdentificationCode* pvalue); + +/**************************************************************/ +/* */ +/* CallTerminationCause_releaseCompleteCauseIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CallTerminationCause_releaseCompleteCauseIE { + ASN1UINT numocts; + ASN1OCTET data[32]; +} H225CallTerminationCause_releaseCompleteCauseIE; + +EXTERN int asn1PE_H225CallTerminationCause_releaseCompleteCauseIE (OOCTXT* pctxt, H225CallTerminationCause_releaseCompleteCauseIE* pvalue); + +EXTERN int asn1PD_H225CallTerminationCause_releaseCompleteCauseIE (OOCTXT* pctxt, H225CallTerminationCause_releaseCompleteCauseIE* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225AliasAddress */ +/* */ +/**************************************************************/ + +/* List of H225AliasAddress */ +typedef DList H225_SeqOfH225AliasAddress; + +EXTERN int asn1PE_H225_SeqOfH225AliasAddress (OOCTXT* pctxt, H225_SeqOfH225AliasAddress* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225AliasAddress (OOCTXT* pctxt, H225_SeqOfH225AliasAddress* pvalue); + +/**************************************************************/ +/* */ +/* VendorIdentifier */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225VendorIdentifier { + struct { + unsigned productIdPresent : 1; + unsigned versionIdPresent : 1; + unsigned enterpriseNumberPresent : 1; + } m; + H225H221NonStandard vendor; + H225VendorIdentifier_productId productId; + H225VendorIdentifier_versionId versionId; + ASN1OBJID enterpriseNumber; +} H225VendorIdentifier; + +EXTERN int asn1PE_H225VendorIdentifier (OOCTXT* pctxt, H225VendorIdentifier* pvalue); + +EXTERN int asn1PD_H225VendorIdentifier (OOCTXT* pctxt, H225VendorIdentifier* pvalue); + +/**************************************************************/ +/* */ +/* GatekeeperInfo */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225GatekeeperInfo { + struct { + unsigned nonStandardDataPresent : 1; + } m; + H225NonStandardParameter nonStandardData; +} H225GatekeeperInfo; + +EXTERN int asn1PE_H225GatekeeperInfo (OOCTXT* pctxt, H225GatekeeperInfo* pvalue); + +EXTERN int asn1PD_H225GatekeeperInfo (OOCTXT* pctxt, H225GatekeeperInfo* pvalue); + +/**************************************************************/ +/* */ +/* DataRate */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225DataRate { + struct { + unsigned nonStandardDataPresent : 1; + unsigned channelMultiplierPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225BandWidth channelRate; + ASN1USINT channelMultiplier; +} H225DataRate; + +EXTERN int asn1PE_H225DataRate (OOCTXT* pctxt, H225DataRate* pvalue); + +EXTERN int asn1PD_H225DataRate (OOCTXT* pctxt, H225DataRate* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225DataRate */ +/* */ +/**************************************************************/ + +/* List of H225DataRate */ +typedef DList H225_SeqOfH225DataRate; + +EXTERN int asn1PE_H225_SeqOfH225DataRate (OOCTXT* pctxt, H225_SeqOfH225DataRate* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225DataRate (OOCTXT* pctxt, H225_SeqOfH225DataRate* pvalue); + +/**************************************************************/ +/* */ +/* SupportedPrefix */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225SupportedPrefix { + struct { + unsigned nonStandardDataPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225AliasAddress prefix; +} H225SupportedPrefix; + +EXTERN int asn1PE_H225SupportedPrefix (OOCTXT* pctxt, H225SupportedPrefix* pvalue); + +EXTERN int asn1PD_H225SupportedPrefix (OOCTXT* pctxt, H225SupportedPrefix* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225SupportedPrefix */ +/* */ +/**************************************************************/ + +/* List of H225SupportedPrefix */ +typedef DList H225_SeqOfH225SupportedPrefix; + +EXTERN int asn1PE_H225_SeqOfH225SupportedPrefix (OOCTXT* pctxt, H225_SeqOfH225SupportedPrefix* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225SupportedPrefix (OOCTXT* pctxt, H225_SeqOfH225SupportedPrefix* pvalue); + +/**************************************************************/ +/* */ +/* H310Caps */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H310Caps { + struct { + unsigned nonStandardDataPresent : 1; + unsigned dataRatesSupportedPresent : 1; + unsigned supportedPrefixesPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225DataRate dataRatesSupported; + H225_SeqOfH225SupportedPrefix supportedPrefixes; +} H225H310Caps; + +EXTERN int asn1PE_H225H310Caps (OOCTXT* pctxt, H225H310Caps* pvalue); + +EXTERN int asn1PD_H225H310Caps (OOCTXT* pctxt, H225H310Caps* pvalue); + +/**************************************************************/ +/* */ +/* H320Caps */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H320Caps { + struct { + unsigned nonStandardDataPresent : 1; + unsigned dataRatesSupportedPresent : 1; + unsigned supportedPrefixesPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225DataRate dataRatesSupported; + H225_SeqOfH225SupportedPrefix supportedPrefixes; +} H225H320Caps; + +EXTERN int asn1PE_H225H320Caps (OOCTXT* pctxt, H225H320Caps* pvalue); + +EXTERN int asn1PD_H225H320Caps (OOCTXT* pctxt, H225H320Caps* pvalue); + +/**************************************************************/ +/* */ +/* H321Caps */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H321Caps { + struct { + unsigned nonStandardDataPresent : 1; + unsigned dataRatesSupportedPresent : 1; + unsigned supportedPrefixesPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225DataRate dataRatesSupported; + H225_SeqOfH225SupportedPrefix supportedPrefixes; +} H225H321Caps; + +EXTERN int asn1PE_H225H321Caps (OOCTXT* pctxt, H225H321Caps* pvalue); + +EXTERN int asn1PD_H225H321Caps (OOCTXT* pctxt, H225H321Caps* pvalue); + +/**************************************************************/ +/* */ +/* H322Caps */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H322Caps { + struct { + unsigned nonStandardDataPresent : 1; + unsigned dataRatesSupportedPresent : 1; + unsigned supportedPrefixesPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225DataRate dataRatesSupported; + H225_SeqOfH225SupportedPrefix supportedPrefixes; +} H225H322Caps; + +EXTERN int asn1PE_H225H322Caps (OOCTXT* pctxt, H225H322Caps* pvalue); + +EXTERN int asn1PD_H225H322Caps (OOCTXT* pctxt, H225H322Caps* pvalue); + +/**************************************************************/ +/* */ +/* H323Caps */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H323Caps { + struct { + unsigned nonStandardDataPresent : 1; + unsigned dataRatesSupportedPresent : 1; + unsigned supportedPrefixesPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225DataRate dataRatesSupported; + H225_SeqOfH225SupportedPrefix supportedPrefixes; +} H225H323Caps; + +EXTERN int asn1PE_H225H323Caps (OOCTXT* pctxt, H225H323Caps* pvalue); + +EXTERN int asn1PD_H225H323Caps (OOCTXT* pctxt, H225H323Caps* pvalue); + +/**************************************************************/ +/* */ +/* H324Caps */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H324Caps { + struct { + unsigned nonStandardDataPresent : 1; + unsigned dataRatesSupportedPresent : 1; + unsigned supportedPrefixesPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225DataRate dataRatesSupported; + H225_SeqOfH225SupportedPrefix supportedPrefixes; +} H225H324Caps; + +EXTERN int asn1PE_H225H324Caps (OOCTXT* pctxt, H225H324Caps* pvalue); + +EXTERN int asn1PD_H225H324Caps (OOCTXT* pctxt, H225H324Caps* pvalue); + +/**************************************************************/ +/* */ +/* VoiceCaps */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225VoiceCaps { + struct { + unsigned nonStandardDataPresent : 1; + unsigned dataRatesSupportedPresent : 1; + unsigned supportedPrefixesPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225DataRate dataRatesSupported; + H225_SeqOfH225SupportedPrefix supportedPrefixes; +} H225VoiceCaps; + +EXTERN int asn1PE_H225VoiceCaps (OOCTXT* pctxt, H225VoiceCaps* pvalue); + +EXTERN int asn1PD_H225VoiceCaps (OOCTXT* pctxt, H225VoiceCaps* pvalue); + +/**************************************************************/ +/* */ +/* T120OnlyCaps */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225T120OnlyCaps { + struct { + unsigned nonStandardDataPresent : 1; + unsigned dataRatesSupportedPresent : 1; + unsigned supportedPrefixesPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225DataRate dataRatesSupported; + H225_SeqOfH225SupportedPrefix supportedPrefixes; +} H225T120OnlyCaps; + +EXTERN int asn1PE_H225T120OnlyCaps (OOCTXT* pctxt, H225T120OnlyCaps* pvalue); + +EXTERN int asn1PD_H225T120OnlyCaps (OOCTXT* pctxt, H225T120OnlyCaps* pvalue); + +/**************************************************************/ +/* */ +/* NonStandardProtocol */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225NonStandardProtocol { + struct { + unsigned nonStandardDataPresent : 1; + unsigned dataRatesSupportedPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225DataRate dataRatesSupported; + H225_SeqOfH225SupportedPrefix supportedPrefixes; +} H225NonStandardProtocol; + +EXTERN int asn1PE_H225NonStandardProtocol (OOCTXT* pctxt, H225NonStandardProtocol* pvalue); + +EXTERN int asn1PD_H225NonStandardProtocol (OOCTXT* pctxt, H225NonStandardProtocol* pvalue); + +/**************************************************************/ +/* */ +/* T38FaxAnnexbOnlyCaps */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225T38FaxAnnexbOnlyCaps { + struct { + unsigned nonStandardDataPresent : 1; + unsigned dataRatesSupportedPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225DataRate dataRatesSupported; + H225_SeqOfH225SupportedPrefix supportedPrefixes; + H245DataProtocolCapability t38FaxProtocol; + H245T38FaxProfile t38FaxProfile; +} H225T38FaxAnnexbOnlyCaps; + +EXTERN int asn1PE_H225T38FaxAnnexbOnlyCaps (OOCTXT* pctxt, H225T38FaxAnnexbOnlyCaps* pvalue); + +EXTERN int asn1PD_H225T38FaxAnnexbOnlyCaps (OOCTXT* pctxt, H225T38FaxAnnexbOnlyCaps* pvalue); + +/**************************************************************/ +/* */ +/* SIPCaps */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225SIPCaps { + struct { + unsigned nonStandardDataPresent : 1; + unsigned dataRatesSupportedPresent : 1; + unsigned supportedPrefixesPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225DataRate dataRatesSupported; + H225_SeqOfH225SupportedPrefix supportedPrefixes; +} H225SIPCaps; + +EXTERN int asn1PE_H225SIPCaps (OOCTXT* pctxt, H225SIPCaps* pvalue); + +EXTERN int asn1PD_H225SIPCaps (OOCTXT* pctxt, H225SIPCaps* pvalue); + +/**************************************************************/ +/* */ +/* SupportedProtocols */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225SupportedProtocols_nonStandardData 1 +#define T_H225SupportedProtocols_h310 2 +#define T_H225SupportedProtocols_h320 3 +#define T_H225SupportedProtocols_h321 4 +#define T_H225SupportedProtocols_h322 5 +#define T_H225SupportedProtocols_h323 6 +#define T_H225SupportedProtocols_h324 7 +#define T_H225SupportedProtocols_voice 8 +#define T_H225SupportedProtocols_t120_only 9 +#define T_H225SupportedProtocols_nonStandardProtocol 10 +#define T_H225SupportedProtocols_t38FaxAnnexbOnly 11 +#define T_H225SupportedProtocols_sip 12 +#define T_H225SupportedProtocols_extElem1 13 + +typedef struct EXTERN H225SupportedProtocols { + int t; + union { + /* t = 1 */ + H225NonStandardParameter *nonStandardData; + /* t = 2 */ + H225H310Caps *h310; + /* t = 3 */ + H225H320Caps *h320; + /* t = 4 */ + H225H321Caps *h321; + /* t = 5 */ + H225H322Caps *h322; + /* t = 6 */ + H225H323Caps *h323; + /* t = 7 */ + H225H324Caps *h324; + /* t = 8 */ + H225VoiceCaps *voice; + /* t = 9 */ + H225T120OnlyCaps *t120_only; + /* t = 10 */ + H225NonStandardProtocol *nonStandardProtocol; + /* t = 11 */ + H225T38FaxAnnexbOnlyCaps *t38FaxAnnexbOnly; + /* t = 12 */ + H225SIPCaps *sip; + /* t = 13 */ + } u; +} H225SupportedProtocols; + +EXTERN int asn1PE_H225SupportedProtocols (OOCTXT* pctxt, H225SupportedProtocols* pvalue); + +EXTERN int asn1PD_H225SupportedProtocols (OOCTXT* pctxt, H225SupportedProtocols* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225SupportedProtocols */ +/* */ +/**************************************************************/ + +/* List of H225SupportedProtocols */ +typedef DList H225_SeqOfH225SupportedProtocols; + +EXTERN int asn1PE_H225_SeqOfH225SupportedProtocols (OOCTXT* pctxt, H225_SeqOfH225SupportedProtocols* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225SupportedProtocols (OOCTXT* pctxt, H225_SeqOfH225SupportedProtocols* pvalue); + +/**************************************************************/ +/* */ +/* GatewayInfo */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225GatewayInfo { + struct { + unsigned protocolPresent : 1; + unsigned nonStandardDataPresent : 1; + } m; + H225_SeqOfH225SupportedProtocols protocol; + H225NonStandardParameter nonStandardData; +} H225GatewayInfo; + +EXTERN int asn1PE_H225GatewayInfo (OOCTXT* pctxt, H225GatewayInfo* pvalue); + +EXTERN int asn1PD_H225GatewayInfo (OOCTXT* pctxt, H225GatewayInfo* pvalue); + +/**************************************************************/ +/* */ +/* McuInfo */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225McuInfo { + struct { + unsigned nonStandardDataPresent : 1; + unsigned protocolPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225SupportedProtocols protocol; +} H225McuInfo; + +EXTERN int asn1PE_H225McuInfo (OOCTXT* pctxt, H225McuInfo* pvalue); + +EXTERN int asn1PD_H225McuInfo (OOCTXT* pctxt, H225McuInfo* pvalue); + +/**************************************************************/ +/* */ +/* TerminalInfo */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TerminalInfo { + struct { + unsigned nonStandardDataPresent : 1; + } m; + H225NonStandardParameter nonStandardData; +} H225TerminalInfo; + +EXTERN int asn1PE_H225TerminalInfo (OOCTXT* pctxt, H225TerminalInfo* pvalue); + +EXTERN int asn1PD_H225TerminalInfo (OOCTXT* pctxt, H225TerminalInfo* pvalue); + +/**************************************************************/ +/* */ +/* TunnelledProtocolAlternateIdentifier */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TunnelledProtocolAlternateIdentifier { + struct { + unsigned protocolVariantPresent : 1; + } m; + ASN1IA5String protocolType; + ASN1IA5String protocolVariant; +} H225TunnelledProtocolAlternateIdentifier; + +EXTERN int asn1PE_H225TunnelledProtocolAlternateIdentifier (OOCTXT* pctxt, H225TunnelledProtocolAlternateIdentifier* pvalue); + +EXTERN int asn1PD_H225TunnelledProtocolAlternateIdentifier (OOCTXT* pctxt, H225TunnelledProtocolAlternateIdentifier* pvalue); + +/**************************************************************/ +/* */ +/* TunnelledProtocol_id */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225TunnelledProtocol_id_tunnelledProtocolObjectID 1 +#define T_H225TunnelledProtocol_id_tunnelledProtocolAlternateID 2 +#define T_H225TunnelledProtocol_id_extElem1 3 + +typedef struct EXTERN H225TunnelledProtocol_id { + int t; + union { + /* t = 1 */ + ASN1OBJID *tunnelledProtocolObjectID; + /* t = 2 */ + H225TunnelledProtocolAlternateIdentifier *tunnelledProtocolAlternateID; + /* t = 3 */ + } u; +} H225TunnelledProtocol_id; + +EXTERN int asn1PE_H225TunnelledProtocol_id (OOCTXT* pctxt, H225TunnelledProtocol_id* pvalue); + +EXTERN int asn1PD_H225TunnelledProtocol_id (OOCTXT* pctxt, H225TunnelledProtocol_id* pvalue); + +/**************************************************************/ +/* */ +/* TunnelledProtocol */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TunnelledProtocol { + struct { + unsigned subIdentifierPresent : 1; + } m; + H225TunnelledProtocol_id id; + ASN1IA5String subIdentifier; +} H225TunnelledProtocol; + +EXTERN int asn1PE_H225TunnelledProtocol (OOCTXT* pctxt, H225TunnelledProtocol* pvalue); + +EXTERN int asn1PD_H225TunnelledProtocol (OOCTXT* pctxt, H225TunnelledProtocol* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225TunnelledProtocol */ +/* */ +/**************************************************************/ + +/* List of H225TunnelledProtocol */ +typedef DList H225_SeqOfH225TunnelledProtocol; + +EXTERN int asn1PE_H225_SeqOfH225TunnelledProtocol (OOCTXT* pctxt, H225_SeqOfH225TunnelledProtocol* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225TunnelledProtocol (OOCTXT* pctxt, H225_SeqOfH225TunnelledProtocol* pvalue); + +/**************************************************************/ +/* */ +/* EndpointType */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225EndpointType { + struct { + unsigned nonStandardDataPresent : 1; + unsigned vendorPresent : 1; + unsigned gatekeeperPresent : 1; + unsigned gatewayPresent : 1; + unsigned mcuPresent : 1; + unsigned terminalPresent : 1; + unsigned setPresent : 1; + unsigned supportedTunnelledProtocolsPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225VendorIdentifier vendor; + H225GatekeeperInfo gatekeeper; + H225GatewayInfo gateway; + H225McuInfo mcu; + H225TerminalInfo terminal; + ASN1BOOL mc; + ASN1BOOL undefinedNode; + H225EndpointType_set set; + H225_SeqOfH225TunnelledProtocol supportedTunnelledProtocols; +} H225EndpointType; + +EXTERN int asn1PE_H225EndpointType (OOCTXT* pctxt, H225EndpointType* pvalue); + +EXTERN int asn1PD_H225EndpointType (OOCTXT* pctxt, H225EndpointType* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225CallReferenceValue */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225_SeqOfH225CallReferenceValue { + ASN1UINT n; + H225CallReferenceValue *elem; +} H225_SeqOfH225CallReferenceValue; + +EXTERN int asn1PE_H225_SeqOfH225CallReferenceValue (OOCTXT* pctxt, H225_SeqOfH225CallReferenceValue* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225CallReferenceValue (OOCTXT* pctxt, H225_SeqOfH225CallReferenceValue* pvalue); + +/**************************************************************/ +/* */ +/* Setup_UUIE_conferenceGoal */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225Setup_UUIE_conferenceGoal_create 1 +#define T_H225Setup_UUIE_conferenceGoal_join 2 +#define T_H225Setup_UUIE_conferenceGoal_invite 3 +#define T_H225Setup_UUIE_conferenceGoal_capability_negotiation 4 +#define T_H225Setup_UUIE_conferenceGoal_callIndependentSupplementaryService 5 +#define T_H225Setup_UUIE_conferenceGoal_extElem1 6 + +typedef struct EXTERN H225Setup_UUIE_conferenceGoal { + int t; +} H225Setup_UUIE_conferenceGoal; + +EXTERN int asn1PE_H225Setup_UUIE_conferenceGoal (OOCTXT* pctxt, H225Setup_UUIE_conferenceGoal* pvalue); + +EXTERN int asn1PD_H225Setup_UUIE_conferenceGoal (OOCTXT* pctxt, H225Setup_UUIE_conferenceGoal* pvalue); + +/**************************************************************/ +/* */ +/* Q954Details */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Q954Details { + ASN1BOOL conferenceCalling; + ASN1BOOL threePartyService; +} H225Q954Details; + +EXTERN int asn1PE_H225Q954Details (OOCTXT* pctxt, H225Q954Details* pvalue); + +EXTERN int asn1PD_H225Q954Details (OOCTXT* pctxt, H225Q954Details* pvalue); + +/**************************************************************/ +/* */ +/* QseriesOptions */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225QseriesOptions { + ASN1BOOL q932Full; + ASN1BOOL q951Full; + ASN1BOOL q952Full; + ASN1BOOL q953Full; + ASN1BOOL q955Full; + ASN1BOOL q956Full; + ASN1BOOL q957Full; + H225Q954Details q954Info; +} H225QseriesOptions; + +EXTERN int asn1PE_H225QseriesOptions (OOCTXT* pctxt, H225QseriesOptions* pvalue); + +EXTERN int asn1PD_H225QseriesOptions (OOCTXT* pctxt, H225QseriesOptions* pvalue); + +/**************************************************************/ +/* */ +/* CallType */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225CallType_pointToPoint 1 +#define T_H225CallType_oneToN 2 +#define T_H225CallType_nToOne 3 +#define T_H225CallType_nToN 4 +#define T_H225CallType_extElem1 5 + +typedef struct EXTERN H225CallType { + int t; +} H225CallType; + +EXTERN int asn1PE_H225CallType (OOCTXT* pctxt, H225CallType* pvalue); + +EXTERN int asn1PD_H225CallType (OOCTXT* pctxt, H225CallType* pvalue); + +/**************************************************************/ +/* */ +/* CallIdentifier */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CallIdentifier { + H225GloballyUniqueID guid; +} H225CallIdentifier; + +EXTERN int asn1PE_H225CallIdentifier (OOCTXT* pctxt, H225CallIdentifier* pvalue); + +EXTERN int asn1PD_H225CallIdentifier (OOCTXT* pctxt, H225CallIdentifier* pvalue); + +/**************************************************************/ +/* */ +/* SecurityServiceMode */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225SecurityServiceMode_nonStandard 1 +#define T_H225SecurityServiceMode_none 2 +#define T_H225SecurityServiceMode_default_ 3 +#define T_H225SecurityServiceMode_extElem1 4 + +typedef struct EXTERN H225SecurityServiceMode { + int t; + union { + /* t = 1 */ + H225NonStandardParameter *nonStandard; + /* t = 2 */ + /* t = 3 */ + /* t = 4 */ + } u; +} H225SecurityServiceMode; + +EXTERN int asn1PE_H225SecurityServiceMode (OOCTXT* pctxt, H225SecurityServiceMode* pvalue); + +EXTERN int asn1PD_H225SecurityServiceMode (OOCTXT* pctxt, H225SecurityServiceMode* pvalue); + +/**************************************************************/ +/* */ +/* SecurityCapabilities */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225SecurityCapabilities { + struct { + unsigned nonStandardPresent : 1; + } m; + H225NonStandardParameter nonStandard; + H225SecurityServiceMode encryption; + H225SecurityServiceMode authenticaton; + H225SecurityServiceMode integrity; +} H225SecurityCapabilities; + +EXTERN int asn1PE_H225SecurityCapabilities (OOCTXT* pctxt, H225SecurityCapabilities* pvalue); + +EXTERN int asn1PD_H225SecurityCapabilities (OOCTXT* pctxt, H225SecurityCapabilities* pvalue); + +/**************************************************************/ +/* */ +/* H245Security */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225H245Security_nonStandard 1 +#define T_H225H245Security_noSecurity 2 +#define T_H225H245Security_tls 3 +#define T_H225H245Security_ipsec 4 +#define T_H225H245Security_extElem1 5 + +typedef struct EXTERN H225H245Security { + int t; + union { + /* t = 1 */ + H225NonStandardParameter *nonStandard; + /* t = 2 */ + /* t = 3 */ + H225SecurityCapabilities *tls; + /* t = 4 */ + H225SecurityCapabilities *ipsec; + /* t = 5 */ + } u; +} H225H245Security; + +EXTERN int asn1PE_H225H245Security (OOCTXT* pctxt, H225H245Security* pvalue); + +EXTERN int asn1PD_H225H245Security (OOCTXT* pctxt, H225H245Security* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225H245Security */ +/* */ +/**************************************************************/ + +/* List of H225H245Security */ +typedef DList H225_SeqOfH225H245Security; + +EXTERN int asn1PE_H225_SeqOfH225H245Security (OOCTXT* pctxt, H225_SeqOfH225H245Security* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225H245Security (OOCTXT* pctxt, H225_SeqOfH225H245Security* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225ClearToken */ +/* */ +/**************************************************************/ + +/* List of H235ClearToken */ +typedef DList H225_SeqOfH225ClearToken; + +EXTERN int asn1PE_H225_SeqOfH225ClearToken (OOCTXT* pctxt, H225_SeqOfH225ClearToken* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225ClearToken (OOCTXT* pctxt, H225_SeqOfH225ClearToken* pvalue); + +/**************************************************************/ +/* */ +/* CryptoH323Token_cryptoEPPwdHash */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CryptoH323Token_cryptoEPPwdHash { + H225AliasAddress alias; + H235TimeStamp timeStamp; + H235HASHED token; +} H225CryptoH323Token_cryptoEPPwdHash; + +EXTERN int asn1PE_H225CryptoH323Token_cryptoEPPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPPwdHash* pvalue); + +EXTERN int asn1PD_H225CryptoH323Token_cryptoEPPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPPwdHash* pvalue); + +/**************************************************************/ +/* */ +/* CryptoH323Token_cryptoGKPwdHash */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CryptoH323Token_cryptoGKPwdHash { + H225GatekeeperIdentifier gatekeeperId; + H235TimeStamp timeStamp; + H235HASHED token; +} H225CryptoH323Token_cryptoGKPwdHash; + +EXTERN int asn1PE_H225CryptoH323Token_cryptoGKPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKPwdHash* pvalue); + +EXTERN int asn1PD_H225CryptoH323Token_cryptoGKPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKPwdHash* pvalue); + +/**************************************************************/ +/* */ +/* CryptoH323Token_cryptoEPCert */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CryptoH323Token_cryptoEPCert { + H235EncodedPwdCertToken toBeSigned; + ASN1OBJID algorithmOID; + H235Params paramS; + ASN1DynBitStr signature; +} H225CryptoH323Token_cryptoEPCert; + +EXTERN int asn1PE_H225CryptoH323Token_cryptoEPCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPCert* pvalue); + +EXTERN int asn1PD_H225CryptoH323Token_cryptoEPCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPCert* pvalue); + +/**************************************************************/ +/* */ +/* CryptoH323Token_cryptoGKCert */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CryptoH323Token_cryptoGKCert { + H235EncodedPwdCertToken toBeSigned; + ASN1OBJID algorithmOID; + H235Params paramS; + ASN1DynBitStr signature; +} H225CryptoH323Token_cryptoGKCert; + +EXTERN int asn1PE_H225CryptoH323Token_cryptoGKCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKCert* pvalue); + +EXTERN int asn1PD_H225CryptoH323Token_cryptoGKCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKCert* pvalue); + +/**************************************************************/ +/* */ +/* CryptoH323Token_cryptoFastStart */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CryptoH323Token_cryptoFastStart { + H225EncodedFastStartToken toBeSigned; + ASN1OBJID algorithmOID; + H235Params paramS; + ASN1DynBitStr signature; +} H225CryptoH323Token_cryptoFastStart; + +EXTERN int asn1PE_H225CryptoH323Token_cryptoFastStart (OOCTXT* pctxt, H225CryptoH323Token_cryptoFastStart* pvalue); + +EXTERN int asn1PD_H225CryptoH323Token_cryptoFastStart (OOCTXT* pctxt, H225CryptoH323Token_cryptoFastStart* pvalue); + +/**************************************************************/ +/* */ +/* CryptoH323Token */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225CryptoH323Token_cryptoEPPwdHash 1 +#define T_H225CryptoH323Token_cryptoGKPwdHash 2 +#define T_H225CryptoH323Token_cryptoEPPwdEncr 3 +#define T_H225CryptoH323Token_cryptoGKPwdEncr 4 +#define T_H225CryptoH323Token_cryptoEPCert 5 +#define T_H225CryptoH323Token_cryptoGKCert 6 +#define T_H225CryptoH323Token_cryptoFastStart 7 +#define T_H225CryptoH323Token_nestedcryptoToken 8 +#define T_H225CryptoH323Token_extElem1 9 + +typedef struct EXTERN H225CryptoH323Token { + int t; + union { + /* t = 1 */ + H225CryptoH323Token_cryptoEPPwdHash *cryptoEPPwdHash; + /* t = 2 */ + H225CryptoH323Token_cryptoGKPwdHash *cryptoGKPwdHash; + /* t = 3 */ + H235ENCRYPTED *cryptoEPPwdEncr; + /* t = 4 */ + H235ENCRYPTED *cryptoGKPwdEncr; + /* t = 5 */ + H225CryptoH323Token_cryptoEPCert *cryptoEPCert; + /* t = 6 */ + H225CryptoH323Token_cryptoGKCert *cryptoGKCert; + /* t = 7 */ + H225CryptoH323Token_cryptoFastStart *cryptoFastStart; + /* t = 8 */ + H235CryptoToken *nestedcryptoToken; + /* t = 9 */ + } u; +} H225CryptoH323Token; + +EXTERN int asn1PE_H225CryptoH323Token (OOCTXT* pctxt, H225CryptoH323Token* pvalue); + +EXTERN int asn1PD_H225CryptoH323Token (OOCTXT* pctxt, H225CryptoH323Token* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225CryptoH323Token */ +/* */ +/**************************************************************/ + +/* List of H225CryptoH323Token */ +typedef DList H225_SeqOfH225CryptoH323Token; + +EXTERN int asn1PE_H225_SeqOfH225CryptoH323Token (OOCTXT* pctxt, H225_SeqOfH225CryptoH323Token* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225CryptoH323Token (OOCTXT* pctxt, H225_SeqOfH225CryptoH323Token* pvalue); + +/**************************************************************/ +/* */ +/* Setup_UUIE_fastStart */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Setup_UUIE_fastStart { + ASN1UINT n; + ASN1DynOctStr *elem; +} H225Setup_UUIE_fastStart; + +EXTERN int asn1PE_H225Setup_UUIE_fastStart (OOCTXT* pctxt, H225Setup_UUIE_fastStart* pvalue); + +EXTERN int asn1PD_H225Setup_UUIE_fastStart (OOCTXT* pctxt, H225Setup_UUIE_fastStart* pvalue); + +/**************************************************************/ +/* */ +/* ScnConnectionType */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225ScnConnectionType_unknown 1 +#define T_H225ScnConnectionType_bChannel 2 +#define T_H225ScnConnectionType_hybrid2x64 3 +#define T_H225ScnConnectionType_hybrid384 4 +#define T_H225ScnConnectionType_hybrid1536 5 +#define T_H225ScnConnectionType_hybrid1920 6 +#define T_H225ScnConnectionType_multirate 7 +#define T_H225ScnConnectionType_extElem1 8 + +typedef struct EXTERN H225ScnConnectionType { + int t; +} H225ScnConnectionType; + +EXTERN int asn1PE_H225ScnConnectionType (OOCTXT* pctxt, H225ScnConnectionType* pvalue); + +EXTERN int asn1PD_H225ScnConnectionType (OOCTXT* pctxt, H225ScnConnectionType* pvalue); + +/**************************************************************/ +/* */ +/* ScnConnectionAggregation */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225ScnConnectionAggregation_auto_ 1 +#define T_H225ScnConnectionAggregation_none 2 +#define T_H225ScnConnectionAggregation_h221 3 +#define T_H225ScnConnectionAggregation_bonded_mode1 4 +#define T_H225ScnConnectionAggregation_bonded_mode2 5 +#define T_H225ScnConnectionAggregation_bonded_mode3 6 +#define T_H225ScnConnectionAggregation_extElem1 7 + +typedef struct EXTERN H225ScnConnectionAggregation { + int t; +} H225ScnConnectionAggregation; + +EXTERN int asn1PE_H225ScnConnectionAggregation (OOCTXT* pctxt, H225ScnConnectionAggregation* pvalue); + +EXTERN int asn1PD_H225ScnConnectionAggregation (OOCTXT* pctxt, H225ScnConnectionAggregation* pvalue); + +/**************************************************************/ +/* */ +/* Setup_UUIE_connectionParameters */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Setup_UUIE_connectionParameters { + H225ScnConnectionType connectionType; + ASN1USINT numberOfScnConnections; + H225ScnConnectionAggregation connectionAggregation; +} H225Setup_UUIE_connectionParameters; + +EXTERN int asn1PE_H225Setup_UUIE_connectionParameters (OOCTXT* pctxt, H225Setup_UUIE_connectionParameters* pvalue); + +EXTERN int asn1PD_H225Setup_UUIE_connectionParameters (OOCTXT* pctxt, H225Setup_UUIE_connectionParameters* pvalue); + +/**************************************************************/ +/* */ +/* Setup_UUIE_language */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Setup_UUIE_language { + ASN1UINT n; + ASN1IA5String *elem; +} H225Setup_UUIE_language; + +EXTERN int asn1PE_H225Setup_UUIE_language (OOCTXT* pctxt, H225Setup_UUIE_language* pvalue); + +EXTERN int asn1PD_H225Setup_UUIE_language (OOCTXT* pctxt, H225Setup_UUIE_language* pvalue); + +/**************************************************************/ +/* */ +/* PresentationIndicator */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225PresentationIndicator_presentationAllowed 1 +#define T_H225PresentationIndicator_presentationRestricted 2 +#define T_H225PresentationIndicator_addressNotAvailable 3 +#define T_H225PresentationIndicator_extElem1 4 + +typedef struct EXTERN H225PresentationIndicator { + int t; +} H225PresentationIndicator; + +EXTERN int asn1PE_H225PresentationIndicator (OOCTXT* pctxt, H225PresentationIndicator* pvalue); + +EXTERN int asn1PD_H225PresentationIndicator (OOCTXT* pctxt, H225PresentationIndicator* pvalue); + +/**************************************************************/ +/* */ +/* CallCreditServiceControl_billingMode */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225CallCreditServiceControl_billingMode_credit 1 +#define T_H225CallCreditServiceControl_billingMode_debit 2 +#define T_H225CallCreditServiceControl_billingMode_extElem1 3 + +typedef struct EXTERN H225CallCreditServiceControl_billingMode { + int t; +} H225CallCreditServiceControl_billingMode; + +EXTERN int asn1PE_H225CallCreditServiceControl_billingMode (OOCTXT* pctxt, H225CallCreditServiceControl_billingMode* pvalue); + +EXTERN int asn1PD_H225CallCreditServiceControl_billingMode (OOCTXT* pctxt, H225CallCreditServiceControl_billingMode* pvalue); + +/**************************************************************/ +/* */ +/* CallCreditServiceControl_callStartingPoint */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225CallCreditServiceControl_callStartingPoint_alerting 1 +#define T_H225CallCreditServiceControl_callStartingPoint_connect 2 +#define T_H225CallCreditServiceControl_callStartingPoint_extElem1 3 + +typedef struct EXTERN H225CallCreditServiceControl_callStartingPoint { + int t; +} H225CallCreditServiceControl_callStartingPoint; + +EXTERN int asn1PE_H225CallCreditServiceControl_callStartingPoint (OOCTXT* pctxt, H225CallCreditServiceControl_callStartingPoint* pvalue); + +EXTERN int asn1PD_H225CallCreditServiceControl_callStartingPoint (OOCTXT* pctxt, H225CallCreditServiceControl_callStartingPoint* pvalue); + +/**************************************************************/ +/* */ +/* CallCreditServiceControl */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CallCreditServiceControl { + struct { + unsigned amountStringPresent : 1; + unsigned billingModePresent : 1; + unsigned callDurationLimitPresent : 1; + unsigned enforceCallDurationLimitPresent : 1; + unsigned callStartingPointPresent : 1; + } m; + ASN1BMPString amountString; + H225CallCreditServiceControl_billingMode billingMode; + ASN1UINT callDurationLimit; + ASN1BOOL enforceCallDurationLimit; + H225CallCreditServiceControl_callStartingPoint callStartingPoint; +} H225CallCreditServiceControl; + +EXTERN int asn1PE_H225CallCreditServiceControl (OOCTXT* pctxt, H225CallCreditServiceControl* pvalue); + +EXTERN int asn1PD_H225CallCreditServiceControl (OOCTXT* pctxt, H225CallCreditServiceControl* pvalue); + +/**************************************************************/ +/* */ +/* ServiceControlDescriptor */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225ServiceControlDescriptor_url 1 +#define T_H225ServiceControlDescriptor_signal 2 +#define T_H225ServiceControlDescriptor_nonStandard 3 +#define T_H225ServiceControlDescriptor_callCreditServiceControl 4 +#define T_H225ServiceControlDescriptor_extElem1 5 + +typedef struct EXTERN H225ServiceControlDescriptor { + int t; + union { + /* t = 1 */ + ASN1IA5String url; + /* t = 2 */ + H225H248SignalsDescriptor *signal; + /* t = 3 */ + H225NonStandardParameter *nonStandard; + /* t = 4 */ + H225CallCreditServiceControl *callCreditServiceControl; + /* t = 5 */ + } u; +} H225ServiceControlDescriptor; + +EXTERN int asn1PE_H225ServiceControlDescriptor (OOCTXT* pctxt, H225ServiceControlDescriptor* pvalue); + +EXTERN int asn1PD_H225ServiceControlDescriptor (OOCTXT* pctxt, H225ServiceControlDescriptor* pvalue); + +/**************************************************************/ +/* */ +/* ServiceControlSession_reason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225ServiceControlSession_reason_open 1 +#define T_H225ServiceControlSession_reason_refresh 2 +#define T_H225ServiceControlSession_reason_close 3 +#define T_H225ServiceControlSession_reason_extElem1 4 + +typedef struct EXTERN H225ServiceControlSession_reason { + int t; +} H225ServiceControlSession_reason; + +EXTERN int asn1PE_H225ServiceControlSession_reason (OOCTXT* pctxt, H225ServiceControlSession_reason* pvalue); + +EXTERN int asn1PD_H225ServiceControlSession_reason (OOCTXT* pctxt, H225ServiceControlSession_reason* pvalue); + +/**************************************************************/ +/* */ +/* ServiceControlSession */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ServiceControlSession { + struct { + unsigned contentsPresent : 1; + } m; + ASN1UINT8 sessionId; + H225ServiceControlDescriptor contents; + H225ServiceControlSession_reason reason; +} H225ServiceControlSession; + +EXTERN int asn1PE_H225ServiceControlSession (OOCTXT* pctxt, H225ServiceControlSession* pvalue); + +EXTERN int asn1PD_H225ServiceControlSession (OOCTXT* pctxt, H225ServiceControlSession* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225ServiceControlSession */ +/* */ +/**************************************************************/ + +/* List of H225ServiceControlSession */ +typedef DList H225_SeqOfH225ServiceControlSession; + +EXTERN int asn1PE_H225_SeqOfH225ServiceControlSession (OOCTXT* pctxt, H225_SeqOfH225ServiceControlSession* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225ServiceControlSession (OOCTXT* pctxt, H225_SeqOfH225ServiceControlSession* pvalue); + +/**************************************************************/ +/* */ +/* CarrierInfo */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CarrierInfo { + struct { + unsigned carrierIdentificationCodePresent : 1; + unsigned carrierNamePresent : 1; + } m; + H225CarrierInfo_carrierIdentificationCode carrierIdentificationCode; + ASN1IA5String carrierName; +} H225CarrierInfo; + +EXTERN int asn1PE_H225CarrierInfo (OOCTXT* pctxt, H225CarrierInfo* pvalue); + +EXTERN int asn1PD_H225CarrierInfo (OOCTXT* pctxt, H225CarrierInfo* pvalue); + +/**************************************************************/ +/* */ +/* CallsAvailable */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CallsAvailable { + struct { + unsigned groupPresent : 1; + unsigned carrierPresent : 1; + } m; + ASN1UINT calls; + ASN1IA5String group; + H225CarrierInfo carrier; +} H225CallsAvailable; + +EXTERN int asn1PE_H225CallsAvailable (OOCTXT* pctxt, H225CallsAvailable* pvalue); + +EXTERN int asn1PD_H225CallsAvailable (OOCTXT* pctxt, H225CallsAvailable* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225CallsAvailable */ +/* */ +/**************************************************************/ + +/* List of H225CallsAvailable */ +typedef DList H225_SeqOfH225CallsAvailable; + +EXTERN int asn1PE_H225_SeqOfH225CallsAvailable (OOCTXT* pctxt, H225_SeqOfH225CallsAvailable* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225CallsAvailable (OOCTXT* pctxt, H225_SeqOfH225CallsAvailable* pvalue); + +/**************************************************************/ +/* */ +/* CallCapacityInfo */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CallCapacityInfo { + struct { + unsigned voiceGwCallsAvailablePresent : 1; + unsigned h310GwCallsAvailablePresent : 1; + unsigned h320GwCallsAvailablePresent : 1; + unsigned h321GwCallsAvailablePresent : 1; + unsigned h322GwCallsAvailablePresent : 1; + unsigned h323GwCallsAvailablePresent : 1; + unsigned h324GwCallsAvailablePresent : 1; + unsigned t120OnlyGwCallsAvailablePresent : 1; + unsigned t38FaxAnnexbOnlyGwCallsAvailablePresent : 1; + unsigned terminalCallsAvailablePresent : 1; + unsigned mcuCallsAvailablePresent : 1; + unsigned sipGwCallsAvailablePresent : 1; + } m; + H225_SeqOfH225CallsAvailable voiceGwCallsAvailable; + H225_SeqOfH225CallsAvailable h310GwCallsAvailable; + H225_SeqOfH225CallsAvailable h320GwCallsAvailable; + H225_SeqOfH225CallsAvailable h321GwCallsAvailable; + H225_SeqOfH225CallsAvailable h322GwCallsAvailable; + H225_SeqOfH225CallsAvailable h323GwCallsAvailable; + H225_SeqOfH225CallsAvailable h324GwCallsAvailable; + H225_SeqOfH225CallsAvailable t120OnlyGwCallsAvailable; + H225_SeqOfH225CallsAvailable t38FaxAnnexbOnlyGwCallsAvailable; + H225_SeqOfH225CallsAvailable terminalCallsAvailable; + H225_SeqOfH225CallsAvailable mcuCallsAvailable; + H225_SeqOfH225CallsAvailable sipGwCallsAvailable; +} H225CallCapacityInfo; + +EXTERN int asn1PE_H225CallCapacityInfo (OOCTXT* pctxt, H225CallCapacityInfo* pvalue); + +EXTERN int asn1PD_H225CallCapacityInfo (OOCTXT* pctxt, H225CallCapacityInfo* pvalue); + +/**************************************************************/ +/* */ +/* CallCapacity */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CallCapacity { + struct { + unsigned maximumCallCapacityPresent : 1; + unsigned currentCallCapacityPresent : 1; + } m; + H225CallCapacityInfo maximumCallCapacity; + H225CallCapacityInfo currentCallCapacity; +} H225CallCapacity; + +EXTERN int asn1PE_H225CallCapacity (OOCTXT* pctxt, H225CallCapacity* pvalue); + +EXTERN int asn1PD_H225CallCapacity (OOCTXT* pctxt, H225CallCapacity* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225CicInfo_cic_element */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225_SeqOfH225CicInfo_cic_element { + ASN1UINT n; + H225CicInfo_cic_element *elem; +} H225_SeqOfH225CicInfo_cic_element; + +EXTERN int asn1PE_H225_SeqOfH225CicInfo_cic_element (OOCTXT* pctxt, H225_SeqOfH225CicInfo_cic_element* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225CicInfo_cic_element (OOCTXT* pctxt, H225_SeqOfH225CicInfo_cic_element* pvalue); + +/**************************************************************/ +/* */ +/* CicInfo */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CicInfo { + H225_SeqOfH225CicInfo_cic_element cic; + H225CicInfo_pointCode pointCode; +} H225CicInfo; + +EXTERN int asn1PE_H225CicInfo (OOCTXT* pctxt, H225CicInfo* pvalue); + +EXTERN int asn1PD_H225CicInfo (OOCTXT* pctxt, H225CicInfo* pvalue); + +/**************************************************************/ +/* */ +/* GroupID_member */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225GroupID_member { + ASN1UINT n; + ASN1USINT *elem; +} H225GroupID_member; + +EXTERN int asn1PE_H225GroupID_member (OOCTXT* pctxt, H225GroupID_member* pvalue); + +EXTERN int asn1PD_H225GroupID_member (OOCTXT* pctxt, H225GroupID_member* pvalue); + +/**************************************************************/ +/* */ +/* GroupID */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225GroupID { + struct { + unsigned memberPresent : 1; + } m; + H225GroupID_member member; + ASN1IA5String group; +} H225GroupID; + +EXTERN int asn1PE_H225GroupID (OOCTXT* pctxt, H225GroupID* pvalue); + +EXTERN int asn1PD_H225GroupID (OOCTXT* pctxt, H225GroupID* pvalue); + +/**************************************************************/ +/* */ +/* CircuitIdentifier */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CircuitIdentifier { + struct { + unsigned cicPresent : 1; + unsigned groupPresent : 1; + unsigned carrierPresent : 1; + } m; + H225CicInfo cic; + H225GroupID group; + H225CarrierInfo carrier; +} H225CircuitIdentifier; + +EXTERN int asn1PE_H225CircuitIdentifier (OOCTXT* pctxt, H225CircuitIdentifier* pvalue); + +EXTERN int asn1PD_H225CircuitIdentifier (OOCTXT* pctxt, H225CircuitIdentifier* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225GenericData */ +/* */ +/**************************************************************/ + +/* List of H225GenericData */ +typedef DList H225_SeqOfH225GenericData; + +EXTERN int asn1PE_H225_SeqOfH225GenericData (OOCTXT* pctxt, H225_SeqOfH225GenericData* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225GenericData (OOCTXT* pctxt, H225_SeqOfH225GenericData* pvalue); + +/**************************************************************/ +/* */ +/* CircuitInfo */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CircuitInfo { + struct { + unsigned sourceCircuitIDPresent : 1; + unsigned destinationCircuitIDPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225CircuitIdentifier sourceCircuitID; + H225CircuitIdentifier destinationCircuitID; + H225_SeqOfH225GenericData genericData; +} H225CircuitInfo; + +EXTERN int asn1PE_H225CircuitInfo (OOCTXT* pctxt, H225CircuitInfo* pvalue); + +EXTERN int asn1PD_H225CircuitInfo (OOCTXT* pctxt, H225CircuitInfo* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225FeatureDescriptor */ +/* */ +/**************************************************************/ + +/* List of H225FeatureDescriptor */ +typedef DList H225_SeqOfH225FeatureDescriptor; + +EXTERN int asn1PE_H225_SeqOfH225FeatureDescriptor (OOCTXT* pctxt, H225_SeqOfH225FeatureDescriptor* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225FeatureDescriptor (OOCTXT* pctxt, H225_SeqOfH225FeatureDescriptor* pvalue); + +/**************************************************************/ +/* */ +/* Setup_UUIE_parallelH245Control */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Setup_UUIE_parallelH245Control { + ASN1UINT n; + ASN1DynOctStr *elem; +} H225Setup_UUIE_parallelH245Control; + +EXTERN int asn1PE_H225Setup_UUIE_parallelH245Control (OOCTXT* pctxt, H225Setup_UUIE_parallelH245Control* pvalue); + +EXTERN int asn1PD_H225Setup_UUIE_parallelH245Control (OOCTXT* pctxt, H225Setup_UUIE_parallelH245Control* pvalue); + +/**************************************************************/ +/* */ +/* ExtendedAliasAddress */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ExtendedAliasAddress { + struct { + unsigned presentationIndicatorPresent : 1; + unsigned screeningIndicatorPresent : 1; + } m; + H225AliasAddress address; + H225PresentationIndicator presentationIndicator; + H225ScreeningIndicator screeningIndicator; +} H225ExtendedAliasAddress; + +EXTERN int asn1PE_H225ExtendedAliasAddress (OOCTXT* pctxt, H225ExtendedAliasAddress* pvalue); + +EXTERN int asn1PD_H225ExtendedAliasAddress (OOCTXT* pctxt, H225ExtendedAliasAddress* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225ExtendedAliasAddress */ +/* */ +/**************************************************************/ + +/* List of H225ExtendedAliasAddress */ +typedef DList H225_SeqOfH225ExtendedAliasAddress; + +EXTERN int asn1PE_H225_SeqOfH225ExtendedAliasAddress (OOCTXT* pctxt, H225_SeqOfH225ExtendedAliasAddress* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225ExtendedAliasAddress (OOCTXT* pctxt, H225_SeqOfH225ExtendedAliasAddress* pvalue); + +/**************************************************************/ +/* */ +/* Setup_UUIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Setup_UUIE { + struct { + unsigned h245AddressPresent : 1; + unsigned sourceAddressPresent : 1; + unsigned destinationAddressPresent : 1; + unsigned destCallSignalAddressPresent : 1; + unsigned destExtraCallInfoPresent : 1; + unsigned destExtraCRVPresent : 1; + unsigned callServicesPresent : 1; + unsigned sourceCallSignalAddressPresent : 1; + unsigned remoteExtensionAddressPresent : 1; + unsigned callIdentifierPresent : 1; + unsigned h245SecurityCapabilityPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned fastStartPresent : 1; + unsigned mediaWaitForConnectPresent : 1; + unsigned canOverlapSendPresent : 1; + unsigned endpointIdentifierPresent : 1; + unsigned multipleCallsPresent : 1; + unsigned maintainConnectionPresent : 1; + unsigned connectionParametersPresent : 1; + unsigned languagePresent : 1; + unsigned presentationIndicatorPresent : 1; + unsigned screeningIndicatorPresent : 1; + unsigned serviceControlPresent : 1; + unsigned symmetricOperationRequiredPresent : 1; + unsigned capacityPresent : 1; + unsigned circuitInfoPresent : 1; + unsigned desiredProtocolsPresent : 1; + unsigned neededFeaturesPresent : 1; + unsigned desiredFeaturesPresent : 1; + unsigned supportedFeaturesPresent : 1; + unsigned parallelH245ControlPresent : 1; + unsigned additionalSourceAddressesPresent : 1; + unsigned hopCountPresent : 1; + } m; + H225ProtocolIdentifier protocolIdentifier; + H225TransportAddress h245Address; + H225_SeqOfH225AliasAddress sourceAddress; + H225EndpointType sourceInfo; + H225_SeqOfH225AliasAddress destinationAddress; + H225TransportAddress destCallSignalAddress; + H225_SeqOfH225AliasAddress destExtraCallInfo; + H225_SeqOfH225CallReferenceValue destExtraCRV; + ASN1BOOL activeMC; + H225ConferenceIdentifier conferenceID; + H225Setup_UUIE_conferenceGoal conferenceGoal; + H225QseriesOptions callServices; + H225CallType callType; + H225TransportAddress sourceCallSignalAddress; + H225AliasAddress remoteExtensionAddress; + H225CallIdentifier callIdentifier; + H225_SeqOfH225H245Security h245SecurityCapability; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225Setup_UUIE_fastStart fastStart; + ASN1BOOL mediaWaitForConnect; + ASN1BOOL canOverlapSend; + H225EndpointIdentifier endpointIdentifier; + ASN1BOOL multipleCalls; + ASN1BOOL maintainConnection; + H225Setup_UUIE_connectionParameters connectionParameters; + H225Setup_UUIE_language language; + H225PresentationIndicator presentationIndicator; + H225ScreeningIndicator screeningIndicator; + H225_SeqOfH225ServiceControlSession serviceControl; + H225CallCapacity capacity; + H225CircuitInfo circuitInfo; + H225_SeqOfH225SupportedProtocols desiredProtocols; + H225_SeqOfH225FeatureDescriptor neededFeatures; + H225_SeqOfH225FeatureDescriptor desiredFeatures; + H225_SeqOfH225FeatureDescriptor supportedFeatures; + H225Setup_UUIE_parallelH245Control parallelH245Control; + H225_SeqOfH225ExtendedAliasAddress additionalSourceAddresses; + ASN1UINT8 hopCount; +} H225Setup_UUIE; + +EXTERN int asn1PE_H225Setup_UUIE (OOCTXT* pctxt, H225Setup_UUIE* pvalue); + +EXTERN int asn1PD_H225Setup_UUIE (OOCTXT* pctxt, H225Setup_UUIE* pvalue); + +/**************************************************************/ +/* */ +/* CallProceeding_UUIE_fastStart */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CallProceeding_UUIE_fastStart { + ASN1UINT n; + ASN1DynOctStr *elem; +} H225CallProceeding_UUIE_fastStart; + +EXTERN int asn1PE_H225CallProceeding_UUIE_fastStart (OOCTXT* pctxt, H225CallProceeding_UUIE_fastStart* pvalue); + +EXTERN int asn1PD_H225CallProceeding_UUIE_fastStart (OOCTXT* pctxt, H225CallProceeding_UUIE_fastStart* pvalue); + +/**************************************************************/ +/* */ +/* FeatureSet */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225FeatureSet { + struct { + unsigned neededFeaturesPresent : 1; + unsigned desiredFeaturesPresent : 1; + unsigned supportedFeaturesPresent : 1; + } m; + ASN1BOOL replacementFeatureSet; + H225_SeqOfH225FeatureDescriptor neededFeatures; + H225_SeqOfH225FeatureDescriptor desiredFeatures; + H225_SeqOfH225FeatureDescriptor supportedFeatures; +} H225FeatureSet; + +EXTERN int asn1PE_H225FeatureSet (OOCTXT* pctxt, H225FeatureSet* pvalue); + +EXTERN int asn1PD_H225FeatureSet (OOCTXT* pctxt, H225FeatureSet* pvalue); + +/**************************************************************/ +/* */ +/* CallProceeding_UUIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CallProceeding_UUIE { + struct { + unsigned h245AddressPresent : 1; + unsigned callIdentifierPresent : 1; + unsigned h245SecurityModePresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned fastStartPresent : 1; + unsigned multipleCallsPresent : 1; + unsigned maintainConnectionPresent : 1; + unsigned fastConnectRefusedPresent : 1; + unsigned featureSetPresent : 1; + } m; + H225ProtocolIdentifier protocolIdentifier; + H225EndpointType destinationInfo; + H225TransportAddress h245Address; + H225CallIdentifier callIdentifier; + H225H245Security h245SecurityMode; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225CallProceeding_UUIE_fastStart fastStart; + ASN1BOOL multipleCalls; + ASN1BOOL maintainConnection; + H225FeatureSet featureSet; +} H225CallProceeding_UUIE; + +EXTERN int asn1PE_H225CallProceeding_UUIE (OOCTXT* pctxt, H225CallProceeding_UUIE* pvalue); + +EXTERN int asn1PD_H225CallProceeding_UUIE (OOCTXT* pctxt, H225CallProceeding_UUIE* pvalue); + +/**************************************************************/ +/* */ +/* Connect_UUIE_fastStart */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Connect_UUIE_fastStart { + ASN1UINT n; + ASN1DynOctStr *elem; +} H225Connect_UUIE_fastStart; + +EXTERN int asn1PE_H225Connect_UUIE_fastStart (OOCTXT* pctxt, H225Connect_UUIE_fastStart* pvalue); + +EXTERN int asn1PD_H225Connect_UUIE_fastStart (OOCTXT* pctxt, H225Connect_UUIE_fastStart* pvalue); + +/**************************************************************/ +/* */ +/* Connect_UUIE_language */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Connect_UUIE_language { + ASN1UINT n; + ASN1IA5String *elem; +} H225Connect_UUIE_language; + +EXTERN int asn1PE_H225Connect_UUIE_language (OOCTXT* pctxt, H225Connect_UUIE_language* pvalue); + +EXTERN int asn1PD_H225Connect_UUIE_language (OOCTXT* pctxt, H225Connect_UUIE_language* pvalue); + +/**************************************************************/ +/* */ +/* Connect_UUIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Connect_UUIE { + struct { + unsigned h245AddressPresent : 1; + unsigned callIdentifierPresent : 1; + unsigned h245SecurityModePresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned fastStartPresent : 1; + unsigned multipleCallsPresent : 1; + unsigned maintainConnectionPresent : 1; + unsigned languagePresent : 1; + unsigned connectedAddressPresent : 1; + unsigned presentationIndicatorPresent : 1; + unsigned screeningIndicatorPresent : 1; + unsigned fastConnectRefusedPresent : 1; + unsigned serviceControlPresent : 1; + unsigned capacityPresent : 1; + unsigned featureSetPresent : 1; + } m; + H225ProtocolIdentifier protocolIdentifier; + H225TransportAddress h245Address; + H225EndpointType destinationInfo; + H225ConferenceIdentifier conferenceID; + H225CallIdentifier callIdentifier; + H225H245Security h245SecurityMode; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225Connect_UUIE_fastStart fastStart; + ASN1BOOL multipleCalls; + ASN1BOOL maintainConnection; + H225Connect_UUIE_language language; + H225_SeqOfH225AliasAddress connectedAddress; + H225PresentationIndicator presentationIndicator; + H225ScreeningIndicator screeningIndicator; + H225_SeqOfH225ServiceControlSession serviceControl; + H225CallCapacity capacity; + H225FeatureSet featureSet; +} H225Connect_UUIE; + +EXTERN int asn1PE_H225Connect_UUIE (OOCTXT* pctxt, H225Connect_UUIE* pvalue); + +EXTERN int asn1PD_H225Connect_UUIE (OOCTXT* pctxt, H225Connect_UUIE* pvalue); + +/**************************************************************/ +/* */ +/* Alerting_UUIE_fastStart */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Alerting_UUIE_fastStart { + ASN1UINT n; + ASN1DynOctStr *elem; +} H225Alerting_UUIE_fastStart; + +EXTERN int asn1PE_H225Alerting_UUIE_fastStart (OOCTXT* pctxt, H225Alerting_UUIE_fastStart* pvalue); + +EXTERN int asn1PD_H225Alerting_UUIE_fastStart (OOCTXT* pctxt, H225Alerting_UUIE_fastStart* pvalue); + +/**************************************************************/ +/* */ +/* Alerting_UUIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Alerting_UUIE { + struct { + unsigned h245AddressPresent : 1; + unsigned callIdentifierPresent : 1; + unsigned h245SecurityModePresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned fastStartPresent : 1; + unsigned multipleCallsPresent : 1; + unsigned maintainConnectionPresent : 1; + unsigned alertingAddressPresent : 1; + unsigned presentationIndicatorPresent : 1; + unsigned screeningIndicatorPresent : 1; + unsigned fastConnectRefusedPresent : 1; + unsigned serviceControlPresent : 1; + unsigned capacityPresent : 1; + unsigned featureSetPresent : 1; + } m; + H225ProtocolIdentifier protocolIdentifier; + H225EndpointType destinationInfo; + H225TransportAddress h245Address; + H225CallIdentifier callIdentifier; + H225H245Security h245SecurityMode; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225Alerting_UUIE_fastStart fastStart; + ASN1BOOL multipleCalls; + ASN1BOOL maintainConnection; + H225_SeqOfH225AliasAddress alertingAddress; + H225PresentationIndicator presentationIndicator; + H225ScreeningIndicator screeningIndicator; + H225_SeqOfH225ServiceControlSession serviceControl; + H225CallCapacity capacity; + H225FeatureSet featureSet; +} H225Alerting_UUIE; + +EXTERN int asn1PE_H225Alerting_UUIE (OOCTXT* pctxt, H225Alerting_UUIE* pvalue); + +EXTERN int asn1PD_H225Alerting_UUIE (OOCTXT* pctxt, H225Alerting_UUIE* pvalue); + +/**************************************************************/ +/* */ +/* Information_UUIE_fastStart */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Information_UUIE_fastStart { + ASN1UINT n; + ASN1DynOctStr *elem; +} H225Information_UUIE_fastStart; + +EXTERN int asn1PE_H225Information_UUIE_fastStart (OOCTXT* pctxt, H225Information_UUIE_fastStart* pvalue); + +EXTERN int asn1PD_H225Information_UUIE_fastStart (OOCTXT* pctxt, H225Information_UUIE_fastStart* pvalue); + +/**************************************************************/ +/* */ +/* Information_UUIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Information_UUIE { + struct { + unsigned callIdentifierPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned fastStartPresent : 1; + unsigned fastConnectRefusedPresent : 1; + unsigned circuitInfoPresent : 1; + } m; + H225ProtocolIdentifier protocolIdentifier; + H225CallIdentifier callIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225Information_UUIE_fastStart fastStart; + H225CircuitInfo circuitInfo; +} H225Information_UUIE; + +EXTERN int asn1PE_H225Information_UUIE (OOCTXT* pctxt, H225Information_UUIE* pvalue); + +EXTERN int asn1PD_H225Information_UUIE (OOCTXT* pctxt, H225Information_UUIE* pvalue); + +/**************************************************************/ +/* */ +/* SecurityErrors */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225SecurityErrors_securityWrongSyncTime 1 +#define T_H225SecurityErrors_securityReplay 2 +#define T_H225SecurityErrors_securityWrongGeneralID 3 +#define T_H225SecurityErrors_securityWrongSendersID 4 +#define T_H225SecurityErrors_securityIntegrityFailed 5 +#define T_H225SecurityErrors_securityWrongOID 6 +#define T_H225SecurityErrors_securityDHmismatch 7 +#define T_H225SecurityErrors_securityCertificateExpired 8 +#define T_H225SecurityErrors_securityCertificateDateInvalid 9 +#define T_H225SecurityErrors_securityCertificateRevoked 10 +#define T_H225SecurityErrors_securityCertificateNotReadable 11 +#define T_H225SecurityErrors_securityCertificateSignatureInvalid 12 +#define T_H225SecurityErrors_securityCertificateMissing 13 +#define T_H225SecurityErrors_securityCertificateIncomplete 14 +#define T_H225SecurityErrors_securityUnsupportedCertificateAlgOID 15 +#define T_H225SecurityErrors_securityUnknownCA 16 +#define T_H225SecurityErrors_extElem1 17 + +typedef struct EXTERN H225SecurityErrors { + int t; +} H225SecurityErrors; + +EXTERN int asn1PE_H225SecurityErrors (OOCTXT* pctxt, H225SecurityErrors* pvalue); + +EXTERN int asn1PD_H225SecurityErrors (OOCTXT* pctxt, H225SecurityErrors* pvalue); + +/**************************************************************/ +/* */ +/* ReleaseCompleteReason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225ReleaseCompleteReason_noBandwidth 1 +#define T_H225ReleaseCompleteReason_gatekeeperResources 2 +#define T_H225ReleaseCompleteReason_unreachableDestination 3 +#define T_H225ReleaseCompleteReason_destinationRejection 4 +#define T_H225ReleaseCompleteReason_invalidRevision 5 +#define T_H225ReleaseCompleteReason_noPermission 6 +#define T_H225ReleaseCompleteReason_unreachableGatekeeper 7 +#define T_H225ReleaseCompleteReason_gatewayResources 8 +#define T_H225ReleaseCompleteReason_badFormatAddress 9 +#define T_H225ReleaseCompleteReason_adaptiveBusy 10 +#define T_H225ReleaseCompleteReason_inConf 11 +#define T_H225ReleaseCompleteReason_undefinedReason 12 +#define T_H225ReleaseCompleteReason_facilityCallDeflection 13 +#define T_H225ReleaseCompleteReason_securityDenied 14 +#define T_H225ReleaseCompleteReason_calledPartyNotRegistered 15 +#define T_H225ReleaseCompleteReason_callerNotRegistered 16 +#define T_H225ReleaseCompleteReason_newConnectionNeeded 17 +#define T_H225ReleaseCompleteReason_nonStandardReason 18 +#define T_H225ReleaseCompleteReason_replaceWithConferenceInvite 19 +#define T_H225ReleaseCompleteReason_genericDataReason 20 +#define T_H225ReleaseCompleteReason_neededFeatureNotSupported 21 +#define T_H225ReleaseCompleteReason_tunnelledSignallingRejected 22 +#define T_H225ReleaseCompleteReason_invalidCID 23 +#define T_H225ReleaseCompleteReason_securityError 24 +#define T_H225ReleaseCompleteReason_hopCountExceeded 25 +#define T_H225ReleaseCompleteReason_extElem1 26 + +typedef struct EXTERN H225ReleaseCompleteReason { + int t; + union { + /* t = 1 */ + /* t = 2 */ + /* t = 3 */ + /* t = 4 */ + /* t = 5 */ + /* t = 6 */ + /* t = 7 */ + /* t = 8 */ + /* t = 9 */ + /* t = 10 */ + /* t = 11 */ + /* t = 12 */ + /* t = 13 */ + /* t = 14 */ + /* t = 15 */ + /* t = 16 */ + /* t = 17 */ + /* t = 18 */ + H225NonStandardParameter *nonStandardReason; + /* t = 19 */ + H225ConferenceIdentifier *replaceWithConferenceInvite; + /* t = 20 */ + /* t = 21 */ + /* t = 22 */ + /* t = 23 */ + /* t = 24 */ + H225SecurityErrors *securityError; + /* t = 25 */ + /* t = 26 */ + } u; +} H225ReleaseCompleteReason; + +EXTERN int asn1PE_H225ReleaseCompleteReason (OOCTXT* pctxt, H225ReleaseCompleteReason* pvalue); + +EXTERN int asn1PD_H225ReleaseCompleteReason (OOCTXT* pctxt, H225ReleaseCompleteReason* pvalue); + +/**************************************************************/ +/* */ +/* ReleaseComplete_UUIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ReleaseComplete_UUIE { + struct { + unsigned reasonPresent : 1; + unsigned callIdentifierPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned busyAddressPresent : 1; + unsigned presentationIndicatorPresent : 1; + unsigned screeningIndicatorPresent : 1; + unsigned capacityPresent : 1; + unsigned serviceControlPresent : 1; + unsigned featureSetPresent : 1; + } m; + H225ProtocolIdentifier protocolIdentifier; + H225ReleaseCompleteReason reason; + H225CallIdentifier callIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225_SeqOfH225AliasAddress busyAddress; + H225PresentationIndicator presentationIndicator; + H225ScreeningIndicator screeningIndicator; + H225CallCapacity capacity; + H225_SeqOfH225ServiceControlSession serviceControl; + H225FeatureSet featureSet; +} H225ReleaseComplete_UUIE; + +EXTERN int asn1PE_H225ReleaseComplete_UUIE (OOCTXT* pctxt, H225ReleaseComplete_UUIE* pvalue); + +EXTERN int asn1PD_H225ReleaseComplete_UUIE (OOCTXT* pctxt, H225ReleaseComplete_UUIE* pvalue); + +/**************************************************************/ +/* */ +/* FacilityReason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225FacilityReason_routeCallToGatekeeper 1 +#define T_H225FacilityReason_callForwarded 2 +#define T_H225FacilityReason_routeCallToMC 3 +#define T_H225FacilityReason_undefinedReason 4 +#define T_H225FacilityReason_conferenceListChoice 5 +#define T_H225FacilityReason_startH245 6 +#define T_H225FacilityReason_noH245 7 +#define T_H225FacilityReason_newTokens 8 +#define T_H225FacilityReason_featureSetUpdate 9 +#define T_H225FacilityReason_forwardedElements 10 +#define T_H225FacilityReason_transportedInformation 11 +#define T_H225FacilityReason_extElem1 12 + +typedef struct EXTERN H225FacilityReason { + int t; +} H225FacilityReason; + +EXTERN int asn1PE_H225FacilityReason (OOCTXT* pctxt, H225FacilityReason* pvalue); + +EXTERN int asn1PD_H225FacilityReason (OOCTXT* pctxt, H225FacilityReason* pvalue); + +/**************************************************************/ +/* */ +/* ConferenceList */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ConferenceList { + struct { + unsigned conferenceIDPresent : 1; + unsigned conferenceAliasPresent : 1; + unsigned nonStandardDataPresent : 1; + } m; + H225ConferenceIdentifier conferenceID; + H225AliasAddress conferenceAlias; + H225NonStandardParameter nonStandardData; +} H225ConferenceList; + +EXTERN int asn1PE_H225ConferenceList (OOCTXT* pctxt, H225ConferenceList* pvalue); + +EXTERN int asn1PD_H225ConferenceList (OOCTXT* pctxt, H225ConferenceList* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225ConferenceList */ +/* */ +/**************************************************************/ + +/* List of H225ConferenceList */ +typedef DList H225_SeqOfH225ConferenceList; + +EXTERN int asn1PE_H225_SeqOfH225ConferenceList (OOCTXT* pctxt, H225_SeqOfH225ConferenceList* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225ConferenceList (OOCTXT* pctxt, H225_SeqOfH225ConferenceList* pvalue); + +/**************************************************************/ +/* */ +/* Facility_UUIE_fastStart */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Facility_UUIE_fastStart { + ASN1UINT n; + ASN1DynOctStr *elem; +} H225Facility_UUIE_fastStart; + +EXTERN int asn1PE_H225Facility_UUIE_fastStart (OOCTXT* pctxt, H225Facility_UUIE_fastStart* pvalue); + +EXTERN int asn1PD_H225Facility_UUIE_fastStart (OOCTXT* pctxt, H225Facility_UUIE_fastStart* pvalue); + +/**************************************************************/ +/* */ +/* Facility_UUIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Facility_UUIE { + struct { + unsigned alternativeAddressPresent : 1; + unsigned alternativeAliasAddressPresent : 1; + unsigned conferenceIDPresent : 1; + unsigned callIdentifierPresent : 1; + unsigned destExtraCallInfoPresent : 1; + unsigned remoteExtensionAddressPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned conferencesPresent : 1; + unsigned h245AddressPresent : 1; + unsigned fastStartPresent : 1; + unsigned multipleCallsPresent : 1; + unsigned maintainConnectionPresent : 1; + unsigned fastConnectRefusedPresent : 1; + unsigned serviceControlPresent : 1; + unsigned circuitInfoPresent : 1; + unsigned featureSetPresent : 1; + unsigned destinationInfoPresent : 1; + unsigned h245SecurityModePresent : 1; + } m; + H225ProtocolIdentifier protocolIdentifier; + H225TransportAddress alternativeAddress; + H225_SeqOfH225AliasAddress alternativeAliasAddress; + H225ConferenceIdentifier conferenceID; + H225FacilityReason reason; + H225CallIdentifier callIdentifier; + H225_SeqOfH225AliasAddress destExtraCallInfo; + H225AliasAddress remoteExtensionAddress; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225_SeqOfH225ConferenceList conferences; + H225TransportAddress h245Address; + H225Facility_UUIE_fastStart fastStart; + ASN1BOOL multipleCalls; + ASN1BOOL maintainConnection; + H225_SeqOfH225ServiceControlSession serviceControl; + H225CircuitInfo circuitInfo; + H225FeatureSet featureSet; + H225EndpointType destinationInfo; + H225H245Security h245SecurityMode; +} H225Facility_UUIE; + +EXTERN int asn1PE_H225Facility_UUIE (OOCTXT* pctxt, H225Facility_UUIE* pvalue); + +EXTERN int asn1PD_H225Facility_UUIE (OOCTXT* pctxt, H225Facility_UUIE* pvalue); + +/**************************************************************/ +/* */ +/* Progress_UUIE_fastStart */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Progress_UUIE_fastStart { + ASN1UINT n; + ASN1DynOctStr *elem; +} H225Progress_UUIE_fastStart; + +EXTERN int asn1PE_H225Progress_UUIE_fastStart (OOCTXT* pctxt, H225Progress_UUIE_fastStart* pvalue); + +EXTERN int asn1PD_H225Progress_UUIE_fastStart (OOCTXT* pctxt, H225Progress_UUIE_fastStart* pvalue); + +/**************************************************************/ +/* */ +/* Progress_UUIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Progress_UUIE { + struct { + unsigned h245AddressPresent : 1; + unsigned h245SecurityModePresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned fastStartPresent : 1; + unsigned multipleCallsPresent : 1; + unsigned maintainConnectionPresent : 1; + unsigned fastConnectRefusedPresent : 1; + } m; + H225ProtocolIdentifier protocolIdentifier; + H225EndpointType destinationInfo; + H225TransportAddress h245Address; + H225CallIdentifier callIdentifier; + H225H245Security h245SecurityMode; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225Progress_UUIE_fastStart fastStart; + ASN1BOOL multipleCalls; + ASN1BOOL maintainConnection; +} H225Progress_UUIE; + +EXTERN int asn1PE_H225Progress_UUIE (OOCTXT* pctxt, H225Progress_UUIE* pvalue); + +EXTERN int asn1PD_H225Progress_UUIE (OOCTXT* pctxt, H225Progress_UUIE* pvalue); + +/**************************************************************/ +/* */ +/* Status_UUIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Status_UUIE { + struct { + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + } m; + H225ProtocolIdentifier protocolIdentifier; + H225CallIdentifier callIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; +} H225Status_UUIE; + +EXTERN int asn1PE_H225Status_UUIE (OOCTXT* pctxt, H225Status_UUIE* pvalue); + +EXTERN int asn1PD_H225Status_UUIE (OOCTXT* pctxt, H225Status_UUIE* pvalue); + +/**************************************************************/ +/* */ +/* StatusInquiry_UUIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225StatusInquiry_UUIE { + struct { + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + } m; + H225ProtocolIdentifier protocolIdentifier; + H225CallIdentifier callIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; +} H225StatusInquiry_UUIE; + +EXTERN int asn1PE_H225StatusInquiry_UUIE (OOCTXT* pctxt, H225StatusInquiry_UUIE* pvalue); + +EXTERN int asn1PD_H225StatusInquiry_UUIE (OOCTXT* pctxt, H225StatusInquiry_UUIE* pvalue); + +/**************************************************************/ +/* */ +/* SetupAcknowledge_UUIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225SetupAcknowledge_UUIE { + struct { + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + } m; + H225ProtocolIdentifier protocolIdentifier; + H225CallIdentifier callIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; +} H225SetupAcknowledge_UUIE; + +EXTERN int asn1PE_H225SetupAcknowledge_UUIE (OOCTXT* pctxt, H225SetupAcknowledge_UUIE* pvalue); + +EXTERN int asn1PD_H225SetupAcknowledge_UUIE (OOCTXT* pctxt, H225SetupAcknowledge_UUIE* pvalue); + +/**************************************************************/ +/* */ +/* Notify_UUIE */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Notify_UUIE { + struct { + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + } m; + H225ProtocolIdentifier protocolIdentifier; + H225CallIdentifier callIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; +} H225Notify_UUIE; + +EXTERN int asn1PE_H225Notify_UUIE (OOCTXT* pctxt, H225Notify_UUIE* pvalue); + +EXTERN int asn1PD_H225Notify_UUIE (OOCTXT* pctxt, H225Notify_UUIE* pvalue); + +/**************************************************************/ +/* */ +/* H323_UU_PDU_h323_message_body */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225H323_UU_PDU_h323_message_body_setup 1 +#define T_H225H323_UU_PDU_h323_message_body_callProceeding 2 +#define T_H225H323_UU_PDU_h323_message_body_connect 3 +#define T_H225H323_UU_PDU_h323_message_body_alerting 4 +#define T_H225H323_UU_PDU_h323_message_body_information 5 +#define T_H225H323_UU_PDU_h323_message_body_releaseComplete 6 +#define T_H225H323_UU_PDU_h323_message_body_facility 7 +#define T_H225H323_UU_PDU_h323_message_body_progress 8 +#define T_H225H323_UU_PDU_h323_message_body_empty 9 +#define T_H225H323_UU_PDU_h323_message_body_status 10 +#define T_H225H323_UU_PDU_h323_message_body_statusInquiry 11 +#define T_H225H323_UU_PDU_h323_message_body_setupAcknowledge 12 +#define T_H225H323_UU_PDU_h323_message_body_notify 13 +#define T_H225H323_UU_PDU_h323_message_body_extElem1 14 + +typedef struct EXTERN H225H323_UU_PDU_h323_message_body { + int t; + union { + /* t = 1 */ + H225Setup_UUIE *setup; + /* t = 2 */ + H225CallProceeding_UUIE *callProceeding; + /* t = 3 */ + H225Connect_UUIE *connect; + /* t = 4 */ + H225Alerting_UUIE *alerting; + /* t = 5 */ + H225Information_UUIE *information; + /* t = 6 */ + H225ReleaseComplete_UUIE *releaseComplete; + /* t = 7 */ + H225Facility_UUIE *facility; + /* t = 8 */ + H225Progress_UUIE *progress; + /* t = 9 */ + /* t = 10 */ + H225Status_UUIE *status; + /* t = 11 */ + H225StatusInquiry_UUIE *statusInquiry; + /* t = 12 */ + H225SetupAcknowledge_UUIE *setupAcknowledge; + /* t = 13 */ + H225Notify_UUIE *notify; + /* t = 14 */ + } u; +} H225H323_UU_PDU_h323_message_body; + +EXTERN int asn1PE_H225H323_UU_PDU_h323_message_body (OOCTXT* pctxt, H225H323_UU_PDU_h323_message_body* pvalue); + +EXTERN int asn1PD_H225H323_UU_PDU_h323_message_body (OOCTXT* pctxt, H225H323_UU_PDU_h323_message_body* pvalue); + +/**************************************************************/ +/* */ +/* H323_UU_PDU_h4501SupplementaryService */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H323_UU_PDU_h4501SupplementaryService { + ASN1UINT n; + ASN1DynOctStr *elem; +} H225H323_UU_PDU_h4501SupplementaryService; + +EXTERN int asn1PE_H225H323_UU_PDU_h4501SupplementaryService (OOCTXT* pctxt, H225H323_UU_PDU_h4501SupplementaryService* pvalue); + +EXTERN int asn1PD_H225H323_UU_PDU_h4501SupplementaryService (OOCTXT* pctxt, H225H323_UU_PDU_h4501SupplementaryService* pvalue); + +/**************************************************************/ +/* */ +/* H323_UU_PDU_h245Control */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H323_UU_PDU_h245Control { + ASN1UINT n; + ASN1DynOctStr *elem; +} H225H323_UU_PDU_h245Control; + +EXTERN int asn1PE_H225H323_UU_PDU_h245Control (OOCTXT* pctxt, H225H323_UU_PDU_h245Control* pvalue); + +EXTERN int asn1PD_H225H323_UU_PDU_h245Control (OOCTXT* pctxt, H225H323_UU_PDU_h245Control* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225NonStandardParameter */ +/* */ +/**************************************************************/ + +/* List of H225NonStandardParameter */ +typedef DList H225_SeqOfH225NonStandardParameter; + +EXTERN int asn1PE_H225_SeqOfH225NonStandardParameter (OOCTXT* pctxt, H225_SeqOfH225NonStandardParameter* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225NonStandardParameter (OOCTXT* pctxt, H225_SeqOfH225NonStandardParameter* pvalue); + +/**************************************************************/ +/* */ +/* CallLinkage */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CallLinkage { + struct { + unsigned globalCallIdPresent : 1; + unsigned threadIdPresent : 1; + } m; + H225GloballyUniqueID globalCallId; + H225GloballyUniqueID threadId; +} H225CallLinkage; + +EXTERN int asn1PE_H225CallLinkage (OOCTXT* pctxt, H225CallLinkage* pvalue); + +EXTERN int asn1PD_H225CallLinkage (OOCTXT* pctxt, H225CallLinkage* pvalue); + +/**************************************************************/ +/* */ +/* H323_UU_PDU_tunnelledSignallingMessage_messageContent */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H323_UU_PDU_tunnelledSignallingMessage_messageContent { + ASN1UINT n; + ASN1DynOctStr *elem; +} H225H323_UU_PDU_tunnelledSignallingMessage_messageContent; + +EXTERN int asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage_messageContent (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage_messageContent* pvalue); + +EXTERN int asn1PD_H225H323_UU_PDU_tunnelledSignallingMessage_messageContent (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage_messageContent* pvalue); + +/**************************************************************/ +/* */ +/* H323_UU_PDU_tunnelledSignallingMessage */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H323_UU_PDU_tunnelledSignallingMessage { + struct { + unsigned tunnellingRequiredPresent : 1; + unsigned nonStandardDataPresent : 1; + } m; + H225TunnelledProtocol tunnelledProtocolID; + H225H323_UU_PDU_tunnelledSignallingMessage_messageContent messageContent; + H225NonStandardParameter nonStandardData; +} H225H323_UU_PDU_tunnelledSignallingMessage; + +EXTERN int asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage* pvalue); + +EXTERN int asn1PD_H225H323_UU_PDU_tunnelledSignallingMessage (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage* pvalue); + +/**************************************************************/ +/* */ +/* StimulusControl */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225StimulusControl { + struct { + unsigned nonStandardPresent : 1; + unsigned isTextPresent : 1; + unsigned h248MessagePresent : 1; + } m; + H225NonStandardParameter nonStandard; + ASN1DynOctStr h248Message; +} H225StimulusControl; + +EXTERN int asn1PE_H225StimulusControl (OOCTXT* pctxt, H225StimulusControl* pvalue); + +EXTERN int asn1PD_H225StimulusControl (OOCTXT* pctxt, H225StimulusControl* pvalue); + +/**************************************************************/ +/* */ +/* H323_UU_PDU */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H323_UU_PDU { + struct { + unsigned nonStandardDataPresent : 1; + unsigned h4501SupplementaryServicePresent : 1; + unsigned h245TunnelingPresent : 1; + unsigned h245ControlPresent : 1; + unsigned nonStandardControlPresent : 1; + unsigned callLinkagePresent : 1; + unsigned tunnelledSignallingMessagePresent : 1; + unsigned provisionalRespToH245TunnelingPresent : 1; + unsigned stimulusControlPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225H323_UU_PDU_h323_message_body h323_message_body; + H225NonStandardParameter nonStandardData; + H225H323_UU_PDU_h4501SupplementaryService h4501SupplementaryService; + ASN1BOOL h245Tunneling; + H225H323_UU_PDU_h245Control h245Control; + H225_SeqOfH225NonStandardParameter nonStandardControl; + H225CallLinkage callLinkage; + H225H323_UU_PDU_tunnelledSignallingMessage tunnelledSignallingMessage; + H225StimulusControl stimulusControl; + H225_SeqOfH225GenericData genericData; +} H225H323_UU_PDU; + +EXTERN int asn1PE_H225H323_UU_PDU (OOCTXT* pctxt, H225H323_UU_PDU* pvalue); + +EXTERN int asn1PD_H225H323_UU_PDU (OOCTXT* pctxt, H225H323_UU_PDU* pvalue); + +/**************************************************************/ +/* */ +/* H323_UserInformation_user_data */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H323_UserInformation_user_data { + ASN1UINT8 protocol_discriminator; + H225H323_UserInformation_user_data_user_information user_information; +} H225H323_UserInformation_user_data; + +EXTERN int asn1PE_H225H323_UserInformation_user_data (OOCTXT* pctxt, H225H323_UserInformation_user_data* pvalue); + +EXTERN int asn1PD_H225H323_UserInformation_user_data (OOCTXT* pctxt, H225H323_UserInformation_user_data* pvalue); + +/**************************************************************/ +/* */ +/* H323_UserInformation */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225H323_UserInformation { + struct { + unsigned user_dataPresent : 1; + } m; + H225H323_UU_PDU h323_uu_pdu; + H225H323_UserInformation_user_data user_data; +} H225H323_UserInformation; + +EXTERN int asn1PE_H225H323_UserInformation (OOCTXT* pctxt, H225H323_UserInformation* pvalue); + +EXTERN int asn1PD_H225H323_UserInformation (OOCTXT* pctxt, H225H323_UserInformation* pvalue); + +/**************************************************************/ +/* */ +/* AddressPattern_range */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225AddressPattern_range { + H225PartyNumber startOfRange; + H225PartyNumber endOfRange; +} H225AddressPattern_range; + +EXTERN int asn1PE_H225AddressPattern_range (OOCTXT* pctxt, H225AddressPattern_range* pvalue); + +EXTERN int asn1PD_H225AddressPattern_range (OOCTXT* pctxt, H225AddressPattern_range* pvalue); + +/**************************************************************/ +/* */ +/* AddressPattern */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225AddressPattern_wildcard 1 +#define T_H225AddressPattern_range 2 +#define T_H225AddressPattern_extElem1 3 + +typedef struct EXTERN H225AddressPattern { + int t; + union { + /* t = 1 */ + H225AliasAddress *wildcard; + /* t = 2 */ + H225AddressPattern_range *range; + /* t = 3 */ + } u; +} H225AddressPattern; + +EXTERN int asn1PE_H225AddressPattern (OOCTXT* pctxt, H225AddressPattern* pvalue); + +EXTERN int asn1PD_H225AddressPattern (OOCTXT* pctxt, H225AddressPattern* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225TransportAddress */ +/* */ +/**************************************************************/ + +/* List of H225TransportAddress */ +typedef DList H225_SeqOfH225TransportAddress; + +EXTERN int asn1PE_H225_SeqOfH225TransportAddress (OOCTXT* pctxt, H225_SeqOfH225TransportAddress* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225TransportAddress (OOCTXT* pctxt, H225_SeqOfH225TransportAddress* pvalue); + +/**************************************************************/ +/* */ +/* AlternateTransportAddresses */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225AlternateTransportAddresses { + struct { + unsigned annexEPresent : 1; + unsigned sctpPresent : 1; + } m; + H225_SeqOfH225TransportAddress annexE; + H225_SeqOfH225TransportAddress sctp; +} H225AlternateTransportAddresses; + +EXTERN int asn1PE_H225AlternateTransportAddresses (OOCTXT* pctxt, H225AlternateTransportAddresses* pvalue); + +EXTERN int asn1PD_H225AlternateTransportAddresses (OOCTXT* pctxt, H225AlternateTransportAddresses* pvalue); + +/**************************************************************/ +/* */ +/* Endpoint */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225Endpoint { + struct { + unsigned nonStandardDataPresent : 1; + unsigned aliasAddressPresent : 1; + unsigned callSignalAddressPresent : 1; + unsigned rasAddressPresent : 1; + unsigned endpointTypePresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned priorityPresent : 1; + unsigned remoteExtensionAddressPresent : 1; + unsigned destExtraCallInfoPresent : 1; + unsigned alternateTransportAddressesPresent : 1; + unsigned circuitInfoPresent : 1; + unsigned featureSetPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225AliasAddress aliasAddress; + H225_SeqOfH225TransportAddress callSignalAddress; + H225_SeqOfH225TransportAddress rasAddress; + H225EndpointType endpointType; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + ASN1UINT8 priority; + H225_SeqOfH225AliasAddress remoteExtensionAddress; + H225_SeqOfH225AliasAddress destExtraCallInfo; + H225AlternateTransportAddresses alternateTransportAddresses; + H225CircuitInfo circuitInfo; + H225FeatureSet featureSet; +} H225Endpoint; + +EXTERN int asn1PE_H225Endpoint (OOCTXT* pctxt, H225Endpoint* pvalue); + +EXTERN int asn1PD_H225Endpoint (OOCTXT* pctxt, H225Endpoint* pvalue); + +/**************************************************************/ +/* */ +/* UseSpecifiedTransport */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225UseSpecifiedTransport_tcp 1 +#define T_H225UseSpecifiedTransport_annexE 2 +#define T_H225UseSpecifiedTransport_sctp 3 +#define T_H225UseSpecifiedTransport_extElem1 4 + +typedef struct EXTERN H225UseSpecifiedTransport { + int t; +} H225UseSpecifiedTransport; + +EXTERN int asn1PE_H225UseSpecifiedTransport (OOCTXT* pctxt, H225UseSpecifiedTransport* pvalue); + +EXTERN int asn1PD_H225UseSpecifiedTransport (OOCTXT* pctxt, H225UseSpecifiedTransport* pvalue); + +/**************************************************************/ +/* */ +/* AlternateGK */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225AlternateGK { + struct { + unsigned gatekeeperIdentifierPresent : 1; + } m; + H225TransportAddress rasAddress; + H225GatekeeperIdentifier gatekeeperIdentifier; + ASN1BOOL needToRegister; + ASN1UINT8 priority; +} H225AlternateGK; + +EXTERN int asn1PE_H225AlternateGK (OOCTXT* pctxt, H225AlternateGK* pvalue); + +EXTERN int asn1PD_H225AlternateGK (OOCTXT* pctxt, H225AlternateGK* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225AlternateGK */ +/* */ +/**************************************************************/ + +/* List of H225AlternateGK */ +typedef DList H225_SeqOfH225AlternateGK; + +EXTERN int asn1PE_H225_SeqOfH225AlternateGK (OOCTXT* pctxt, H225_SeqOfH225AlternateGK* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225AlternateGK (OOCTXT* pctxt, H225_SeqOfH225AlternateGK* pvalue); + +/**************************************************************/ +/* */ +/* AltGKInfo */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225AltGKInfo { + H225_SeqOfH225AlternateGK alternateGatekeeper; + ASN1BOOL altGKisPermanent; +} H225AltGKInfo; + +EXTERN int asn1PE_H225AltGKInfo (OOCTXT* pctxt, H225AltGKInfo* pvalue); + +EXTERN int asn1PD_H225AltGKInfo (OOCTXT* pctxt, H225AltGKInfo* pvalue); + +/**************************************************************/ +/* */ +/* SecurityErrors2 */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225SecurityErrors2_securityWrongSyncTime 1 +#define T_H225SecurityErrors2_securityReplay 2 +#define T_H225SecurityErrors2_securityWrongGeneralID 3 +#define T_H225SecurityErrors2_securityWrongSendersID 4 +#define T_H225SecurityErrors2_securityIntegrityFailed 5 +#define T_H225SecurityErrors2_securityWrongOID 6 +#define T_H225SecurityErrors2_extElem1 7 + +typedef struct EXTERN H225SecurityErrors2 { + int t; +} H225SecurityErrors2; + +EXTERN int asn1PE_H225SecurityErrors2 (OOCTXT* pctxt, H225SecurityErrors2* pvalue); + +EXTERN int asn1PD_H225SecurityErrors2 (OOCTXT* pctxt, H225SecurityErrors2* pvalue); + +/**************************************************************/ +/* */ +/* EncryptIntAlg */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225EncryptIntAlg_nonStandard 1 +#define T_H225EncryptIntAlg_isoAlgorithm 2 +#define T_H225EncryptIntAlg_extElem1 3 + +typedef struct EXTERN H225EncryptIntAlg { + int t; + union { + /* t = 1 */ + H225NonStandardParameter *nonStandard; + /* t = 2 */ + ASN1OBJID *isoAlgorithm; + /* t = 3 */ + } u; +} H225EncryptIntAlg; + +EXTERN int asn1PE_H225EncryptIntAlg (OOCTXT* pctxt, H225EncryptIntAlg* pvalue); + +EXTERN int asn1PD_H225EncryptIntAlg (OOCTXT* pctxt, H225EncryptIntAlg* pvalue); + +/**************************************************************/ +/* */ +/* NonIsoIntegrityMechanism */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225NonIsoIntegrityMechanism_hMAC_MD5 1 +#define T_H225NonIsoIntegrityMechanism_hMAC_iso10118_2_s 2 +#define T_H225NonIsoIntegrityMechanism_hMAC_iso10118_2_l 3 +#define T_H225NonIsoIntegrityMechanism_hMAC_iso10118_3 4 +#define T_H225NonIsoIntegrityMechanism_extElem1 5 + +typedef struct EXTERN H225NonIsoIntegrityMechanism { + int t; + union { + /* t = 1 */ + /* t = 2 */ + H225EncryptIntAlg *hMAC_iso10118_2_s; + /* t = 3 */ + H225EncryptIntAlg *hMAC_iso10118_2_l; + /* t = 4 */ + ASN1OBJID *hMAC_iso10118_3; + /* t = 5 */ + } u; +} H225NonIsoIntegrityMechanism; + +EXTERN int asn1PE_H225NonIsoIntegrityMechanism (OOCTXT* pctxt, H225NonIsoIntegrityMechanism* pvalue); + +EXTERN int asn1PD_H225NonIsoIntegrityMechanism (OOCTXT* pctxt, H225NonIsoIntegrityMechanism* pvalue); + +/**************************************************************/ +/* */ +/* IntegrityMechanism */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225IntegrityMechanism_nonStandard 1 +#define T_H225IntegrityMechanism_digSig 2 +#define T_H225IntegrityMechanism_iso9797 3 +#define T_H225IntegrityMechanism_nonIsoIM 4 +#define T_H225IntegrityMechanism_extElem1 5 + +typedef struct EXTERN H225IntegrityMechanism { + int t; + union { + /* t = 1 */ + H225NonStandardParameter *nonStandard; + /* t = 2 */ + /* t = 3 */ + ASN1OBJID *iso9797; + /* t = 4 */ + H225NonIsoIntegrityMechanism *nonIsoIM; + /* t = 5 */ + } u; +} H225IntegrityMechanism; + +EXTERN int asn1PE_H225IntegrityMechanism (OOCTXT* pctxt, H225IntegrityMechanism* pvalue); + +EXTERN int asn1PD_H225IntegrityMechanism (OOCTXT* pctxt, H225IntegrityMechanism* pvalue); + +/**************************************************************/ +/* */ +/* ICV */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ICV { + ASN1OBJID algorithmOID; + ASN1DynBitStr icv; +} H225ICV; + +EXTERN int asn1PE_H225ICV (OOCTXT* pctxt, H225ICV* pvalue); + +EXTERN int asn1PD_H225ICV (OOCTXT* pctxt, H225ICV* pvalue); + +/**************************************************************/ +/* */ +/* CapacityReportingCapability */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CapacityReportingCapability { + ASN1BOOL canReportCallCapacity; +} H225CapacityReportingCapability; + +EXTERN int asn1PE_H225CapacityReportingCapability (OOCTXT* pctxt, H225CapacityReportingCapability* pvalue); + +EXTERN int asn1PD_H225CapacityReportingCapability (OOCTXT* pctxt, H225CapacityReportingCapability* pvalue); + +/**************************************************************/ +/* */ +/* CapacityReportingSpecification_when */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CapacityReportingSpecification_when { + struct { + unsigned callStartPresent : 1; + unsigned callEndPresent : 1; + } m; + ASN1OCTET __dummy__; +} H225CapacityReportingSpecification_when; + +EXTERN int asn1PE_H225CapacityReportingSpecification_when (OOCTXT* pctxt, H225CapacityReportingSpecification_when* pvalue); + +EXTERN int asn1PD_H225CapacityReportingSpecification_when (OOCTXT* pctxt, H225CapacityReportingSpecification_when* pvalue); + +/**************************************************************/ +/* */ +/* CapacityReportingSpecification */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CapacityReportingSpecification { + H225CapacityReportingSpecification_when when; +} H225CapacityReportingSpecification; + +EXTERN int asn1PE_H225CapacityReportingSpecification (OOCTXT* pctxt, H225CapacityReportingSpecification* pvalue); + +EXTERN int asn1PD_H225CapacityReportingSpecification (OOCTXT* pctxt, H225CapacityReportingSpecification* pvalue); + +/**************************************************************/ +/* */ +/* RasUsageInfoTypes */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RasUsageInfoTypes { + struct { + unsigned startTimePresent : 1; + unsigned endTimePresent : 1; + unsigned terminationCausePresent : 1; + } m; + H225_SeqOfH225NonStandardParameter nonStandardUsageTypes; +} H225RasUsageInfoTypes; + +EXTERN int asn1PE_H225RasUsageInfoTypes (OOCTXT* pctxt, H225RasUsageInfoTypes* pvalue); + +EXTERN int asn1PD_H225RasUsageInfoTypes (OOCTXT* pctxt, H225RasUsageInfoTypes* pvalue); + +/**************************************************************/ +/* */ +/* RasUsageSpecification_when */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RasUsageSpecification_when { + struct { + unsigned startPresent : 1; + unsigned endPresent : 1; + unsigned inIrrPresent : 1; + } m; + ASN1OCTET __dummy__; +} H225RasUsageSpecification_when; + +EXTERN int asn1PE_H225RasUsageSpecification_when (OOCTXT* pctxt, H225RasUsageSpecification_when* pvalue); + +EXTERN int asn1PD_H225RasUsageSpecification_when (OOCTXT* pctxt, H225RasUsageSpecification_when* pvalue); + +/**************************************************************/ +/* */ +/* RasUsageSpecification_callStartingPoint */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RasUsageSpecification_callStartingPoint { + struct { + unsigned alertingPresent : 1; + unsigned connectPresent : 1; + } m; + ASN1OCTET __dummy__; +} H225RasUsageSpecification_callStartingPoint; + +EXTERN int asn1PE_H225RasUsageSpecification_callStartingPoint (OOCTXT* pctxt, H225RasUsageSpecification_callStartingPoint* pvalue); + +EXTERN int asn1PD_H225RasUsageSpecification_callStartingPoint (OOCTXT* pctxt, H225RasUsageSpecification_callStartingPoint* pvalue); + +/**************************************************************/ +/* */ +/* RasUsageSpecification */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RasUsageSpecification { + struct { + unsigned callStartingPointPresent : 1; + } m; + H225RasUsageSpecification_when when; + H225RasUsageSpecification_callStartingPoint callStartingPoint; + H225RasUsageInfoTypes required; +} H225RasUsageSpecification; + +EXTERN int asn1PE_H225RasUsageSpecification (OOCTXT* pctxt, H225RasUsageSpecification* pvalue); + +EXTERN int asn1PD_H225RasUsageSpecification (OOCTXT* pctxt, H225RasUsageSpecification* pvalue); + +/**************************************************************/ +/* */ +/* RasUsageInformation */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RasUsageInformation { + struct { + unsigned alertingTimePresent : 1; + unsigned connectTimePresent : 1; + unsigned endTimePresent : 1; + } m; + H225_SeqOfH225NonStandardParameter nonStandardUsageFields; + H235TimeStamp alertingTime; + H235TimeStamp connectTime; + H235TimeStamp endTime; +} H225RasUsageInformation; + +EXTERN int asn1PE_H225RasUsageInformation (OOCTXT* pctxt, H225RasUsageInformation* pvalue); + +EXTERN int asn1PD_H225RasUsageInformation (OOCTXT* pctxt, H225RasUsageInformation* pvalue); + +/**************************************************************/ +/* */ +/* CallTerminationCause */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225CallTerminationCause_releaseCompleteReason 1 +#define T_H225CallTerminationCause_releaseCompleteCauseIE 2 +#define T_H225CallTerminationCause_extElem1 3 + +typedef struct EXTERN H225CallTerminationCause { + int t; + union { + /* t = 1 */ + H225ReleaseCompleteReason *releaseCompleteReason; + /* t = 2 */ + H225CallTerminationCause_releaseCompleteCauseIE *releaseCompleteCauseIE; + /* t = 3 */ + } u; +} H225CallTerminationCause; + +EXTERN int asn1PE_H225CallTerminationCause (OOCTXT* pctxt, H225CallTerminationCause* pvalue); + +EXTERN int asn1PD_H225CallTerminationCause (OOCTXT* pctxt, H225CallTerminationCause* pvalue); + +/**************************************************************/ +/* */ +/* TransportChannelInfo */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225TransportChannelInfo { + struct { + unsigned sendAddressPresent : 1; + unsigned recvAddressPresent : 1; + } m; + H225TransportAddress sendAddress; + H225TransportAddress recvAddress; +} H225TransportChannelInfo; + +EXTERN int asn1PE_H225TransportChannelInfo (OOCTXT* pctxt, H225TransportChannelInfo* pvalue); + +EXTERN int asn1PD_H225TransportChannelInfo (OOCTXT* pctxt, H225TransportChannelInfo* pvalue); + +/**************************************************************/ +/* */ +/* BandwidthDetails */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225BandwidthDetails { + ASN1BOOL sender; + ASN1BOOL multicast; + H225BandWidth bandwidth; + H225TransportChannelInfo rtcpAddresses; +} H225BandwidthDetails; + +EXTERN int asn1PE_H225BandwidthDetails (OOCTXT* pctxt, H225BandwidthDetails* pvalue); + +EXTERN int asn1PD_H225BandwidthDetails (OOCTXT* pctxt, H225BandwidthDetails* pvalue); + +/**************************************************************/ +/* */ +/* CallCreditCapability */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225CallCreditCapability { + struct { + unsigned canDisplayAmountStringPresent : 1; + unsigned canEnforceDurationLimitPresent : 1; + } m; + ASN1BOOL canDisplayAmountString; + ASN1BOOL canEnforceDurationLimit; +} H225CallCreditCapability; + +EXTERN int asn1PE_H225CallCreditCapability (OOCTXT* pctxt, H225CallCreditCapability* pvalue); + +EXTERN int asn1PD_H225CallCreditCapability (OOCTXT* pctxt, H225CallCreditCapability* pvalue); + +/**************************************************************/ +/* */ +/* RTPSession_associatedSessionIds */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RTPSession_associatedSessionIds { + ASN1UINT n; + ASN1UINT8 *elem; +} H225RTPSession_associatedSessionIds; + +EXTERN int asn1PE_H225RTPSession_associatedSessionIds (OOCTXT* pctxt, H225RTPSession_associatedSessionIds* pvalue); + +EXTERN int asn1PD_H225RTPSession_associatedSessionIds (OOCTXT* pctxt, H225RTPSession_associatedSessionIds* pvalue); + +/**************************************************************/ +/* */ +/* RTPSession */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RTPSession { + struct { + unsigned multicastPresent : 1; + unsigned bandwidthPresent : 1; + } m; + H225TransportChannelInfo rtpAddress; + H225TransportChannelInfo rtcpAddress; + ASN1PrintableString cname; + ASN1UINT ssrc; + ASN1UINT8 sessionId; + H225RTPSession_associatedSessionIds associatedSessionIds; + H225BandWidth bandwidth; +} H225RTPSession; + +EXTERN int asn1PE_H225RTPSession (OOCTXT* pctxt, H225RTPSession* pvalue); + +EXTERN int asn1PD_H225RTPSession (OOCTXT* pctxt, H225RTPSession* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225Endpoint */ +/* */ +/**************************************************************/ + +/* List of H225Endpoint */ +typedef DList H225_SeqOfH225Endpoint; + +EXTERN int asn1PE_H225_SeqOfH225Endpoint (OOCTXT* pctxt, H225_SeqOfH225Endpoint* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225Endpoint (OOCTXT* pctxt, H225_SeqOfH225Endpoint* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225AuthenticationMechanism */ +/* */ +/**************************************************************/ + +/* List of H235AuthenticationMechanism */ +typedef DList H225_SeqOfH225AuthenticationMechanism; + +EXTERN int asn1PE_H225_SeqOfH225AuthenticationMechanism (OOCTXT* pctxt, H225_SeqOfH225AuthenticationMechanism* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225AuthenticationMechanism (OOCTXT* pctxt, H225_SeqOfH225AuthenticationMechanism* pvalue); + +/**************************************************************/ +/* */ +/* GatekeeperRequest_algorithmOIDs */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225GatekeeperRequest_algorithmOIDs { + ASN1UINT n; + ASN1OBJID *elem; +} H225GatekeeperRequest_algorithmOIDs; + +EXTERN int asn1PE_H225GatekeeperRequest_algorithmOIDs (OOCTXT* pctxt, H225GatekeeperRequest_algorithmOIDs* pvalue); + +EXTERN int asn1PD_H225GatekeeperRequest_algorithmOIDs (OOCTXT* pctxt, H225GatekeeperRequest_algorithmOIDs* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225IntegrityMechanism */ +/* */ +/**************************************************************/ + +/* List of H225IntegrityMechanism */ +typedef DList H225_SeqOfH225IntegrityMechanism; + +EXTERN int asn1PE_H225_SeqOfH225IntegrityMechanism (OOCTXT* pctxt, H225_SeqOfH225IntegrityMechanism* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225IntegrityMechanism (OOCTXT* pctxt, H225_SeqOfH225IntegrityMechanism* pvalue); + +/**************************************************************/ +/* */ +/* GatekeeperRequest */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225GatekeeperRequest { + struct { + unsigned nonStandardDataPresent : 1; + unsigned gatekeeperIdentifierPresent : 1; + unsigned callServicesPresent : 1; + unsigned endpointAliasPresent : 1; + unsigned alternateEndpointsPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned authenticationCapabilityPresent : 1; + unsigned algorithmOIDsPresent : 1; + unsigned integrityPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned supportsAltGKPresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225ProtocolIdentifier protocolIdentifier; + H225NonStandardParameter nonStandardData; + H225TransportAddress rasAddress; + H225EndpointType endpointType; + H225GatekeeperIdentifier gatekeeperIdentifier; + H225QseriesOptions callServices; + H225_SeqOfH225AliasAddress endpointAlias; + H225_SeqOfH225Endpoint alternateEndpoints; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225_SeqOfH225AuthenticationMechanism authenticationCapability; + H225GatekeeperRequest_algorithmOIDs algorithmOIDs; + H225_SeqOfH225IntegrityMechanism integrity; + H225ICV integrityCheckValue; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; +} H225GatekeeperRequest; + +EXTERN int asn1PE_H225GatekeeperRequest (OOCTXT* pctxt, H225GatekeeperRequest* pvalue); + +EXTERN int asn1PD_H225GatekeeperRequest (OOCTXT* pctxt, H225GatekeeperRequest* pvalue); + +/**************************************************************/ +/* */ +/* GatekeeperConfirm */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225GatekeeperConfirm { + struct { + unsigned nonStandardDataPresent : 1; + unsigned gatekeeperIdentifierPresent : 1; + unsigned alternateGatekeeperPresent : 1; + unsigned authenticationModePresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned algorithmOIDPresent : 1; + unsigned integrityPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225ProtocolIdentifier protocolIdentifier; + H225NonStandardParameter nonStandardData; + H225GatekeeperIdentifier gatekeeperIdentifier; + H225TransportAddress rasAddress; + H225_SeqOfH225AlternateGK alternateGatekeeper; + H235AuthenticationMechanism authenticationMode; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + ASN1OBJID algorithmOID; + H225_SeqOfH225IntegrityMechanism integrity; + H225ICV integrityCheckValue; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; +} H225GatekeeperConfirm; + +EXTERN int asn1PE_H225GatekeeperConfirm (OOCTXT* pctxt, H225GatekeeperConfirm* pvalue); + +EXTERN int asn1PD_H225GatekeeperConfirm (OOCTXT* pctxt, H225GatekeeperConfirm* pvalue); + +/**************************************************************/ +/* */ +/* GatekeeperRejectReason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225GatekeeperRejectReason_resourceUnavailable 1 +#define T_H225GatekeeperRejectReason_terminalExcluded 2 +#define T_H225GatekeeperRejectReason_invalidRevision 3 +#define T_H225GatekeeperRejectReason_undefinedReason 4 +#define T_H225GatekeeperRejectReason_securityDenial 5 +#define T_H225GatekeeperRejectReason_genericDataReason 6 +#define T_H225GatekeeperRejectReason_neededFeatureNotSupported 7 +#define T_H225GatekeeperRejectReason_securityError 8 +#define T_H225GatekeeperRejectReason_extElem1 9 + +typedef struct EXTERN H225GatekeeperRejectReason { + int t; + union { + /* t = 1 */ + /* t = 2 */ + /* t = 3 */ + /* t = 4 */ + /* t = 5 */ + /* t = 6 */ + /* t = 7 */ + /* t = 8 */ + H225SecurityErrors *securityError; + /* t = 9 */ + } u; +} H225GatekeeperRejectReason; + +EXTERN int asn1PE_H225GatekeeperRejectReason (OOCTXT* pctxt, H225GatekeeperRejectReason* pvalue); + +EXTERN int asn1PD_H225GatekeeperRejectReason (OOCTXT* pctxt, H225GatekeeperRejectReason* pvalue); + +/**************************************************************/ +/* */ +/* GatekeeperReject */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225GatekeeperReject { + struct { + unsigned nonStandardDataPresent : 1; + unsigned gatekeeperIdentifierPresent : 1; + unsigned altGKInfoPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225ProtocolIdentifier protocolIdentifier; + H225NonStandardParameter nonStandardData; + H225GatekeeperIdentifier gatekeeperIdentifier; + H225GatekeeperRejectReason rejectReason; + H225AltGKInfo altGKInfo; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; +} H225GatekeeperReject; + +EXTERN int asn1PE_H225GatekeeperReject (OOCTXT* pctxt, H225GatekeeperReject* pvalue); + +EXTERN int asn1PD_H225GatekeeperReject (OOCTXT* pctxt, H225GatekeeperReject* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225AddressPattern */ +/* */ +/**************************************************************/ + +/* List of H225AddressPattern */ +typedef DList H225_SeqOfH225AddressPattern; + +EXTERN int asn1PE_H225_SeqOfH225AddressPattern (OOCTXT* pctxt, H225_SeqOfH225AddressPattern* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225AddressPattern (OOCTXT* pctxt, H225_SeqOfH225AddressPattern* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225H248PackagesDescriptor */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225_SeqOfH225H248PackagesDescriptor { + ASN1UINT n; + H225H248PackagesDescriptor *elem; +} H225_SeqOfH225H248PackagesDescriptor; + +EXTERN int asn1PE_H225_SeqOfH225H248PackagesDescriptor (OOCTXT* pctxt, H225_SeqOfH225H248PackagesDescriptor* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225H248PackagesDescriptor (OOCTXT* pctxt, H225_SeqOfH225H248PackagesDescriptor* pvalue); + +/**************************************************************/ +/* */ +/* RegistrationRequest */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RegistrationRequest { + struct { + unsigned nonStandardDataPresent : 1; + unsigned terminalAliasPresent : 1; + unsigned gatekeeperIdentifierPresent : 1; + unsigned alternateEndpointsPresent : 1; + unsigned timeToLivePresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned keepAlivePresent : 1; + unsigned endpointIdentifierPresent : 1; + unsigned willSupplyUUIEsPresent : 1; + unsigned maintainConnectionPresent : 1; + unsigned alternateTransportAddressesPresent : 1; + unsigned additiveRegistrationPresent : 1; + unsigned terminalAliasPatternPresent : 1; + unsigned supportsAltGKPresent : 1; + unsigned usageReportingCapabilityPresent : 1; + unsigned multipleCallsPresent : 1; + unsigned supportedH248PackagesPresent : 1; + unsigned callCreditCapabilityPresent : 1; + unsigned capacityReportingCapabilityPresent : 1; + unsigned capacityPresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + unsigned restartPresent : 1; + unsigned supportsACFSequencesPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225ProtocolIdentifier protocolIdentifier; + H225NonStandardParameter nonStandardData; + ASN1BOOL discoveryComplete; + H225_SeqOfH225TransportAddress callSignalAddress; + H225_SeqOfH225TransportAddress rasAddress; + H225EndpointType terminalType; + H225_SeqOfH225AliasAddress terminalAlias; + H225GatekeeperIdentifier gatekeeperIdentifier; + H225VendorIdentifier endpointVendor; + H225_SeqOfH225Endpoint alternateEndpoints; + H225TimeToLive timeToLive; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + ASN1BOOL keepAlive; + H225EndpointIdentifier endpointIdentifier; + ASN1BOOL willSupplyUUIEs; + ASN1BOOL maintainConnection; + H225AlternateTransportAddresses alternateTransportAddresses; + H225_SeqOfH225AddressPattern terminalAliasPattern; + H225RasUsageInfoTypes usageReportingCapability; + ASN1BOOL multipleCalls; + H225_SeqOfH225H248PackagesDescriptor supportedH248Packages; + H225CallCreditCapability callCreditCapability; + H225CapacityReportingCapability capacityReportingCapability; + H225CallCapacity capacity; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; +} H225RegistrationRequest; + +EXTERN int asn1PE_H225RegistrationRequest (OOCTXT* pctxt, H225RegistrationRequest* pvalue); + +EXTERN int asn1PD_H225RegistrationRequest (OOCTXT* pctxt, H225RegistrationRequest* pvalue); + +/**************************************************************/ +/* */ +/* RegistrationConfirm_preGrantedARQ */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RegistrationConfirm_preGrantedARQ { + struct { + unsigned irrFrequencyInCallPresent : 1; + unsigned totalBandwidthRestrictionPresent : 1; + unsigned alternateTransportAddressesPresent : 1; + unsigned useSpecifiedTransportPresent : 1; + } m; + ASN1BOOL makeCall; + ASN1BOOL useGKCallSignalAddressToMakeCall; + ASN1BOOL answerCall; + ASN1BOOL useGKCallSignalAddressToAnswer; + ASN1USINT irrFrequencyInCall; + H225BandWidth totalBandwidthRestriction; + H225AlternateTransportAddresses alternateTransportAddresses; + H225UseSpecifiedTransport useSpecifiedTransport; +} H225RegistrationConfirm_preGrantedARQ; + +EXTERN int asn1PE_H225RegistrationConfirm_preGrantedARQ (OOCTXT* pctxt, H225RegistrationConfirm_preGrantedARQ* pvalue); + +EXTERN int asn1PD_H225RegistrationConfirm_preGrantedARQ (OOCTXT* pctxt, H225RegistrationConfirm_preGrantedARQ* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225RasUsageSpecification */ +/* */ +/**************************************************************/ + +/* List of H225RasUsageSpecification */ +typedef DList H225_SeqOfH225RasUsageSpecification; + +EXTERN int asn1PE_H225_SeqOfH225RasUsageSpecification (OOCTXT* pctxt, H225_SeqOfH225RasUsageSpecification* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225RasUsageSpecification (OOCTXT* pctxt, H225_SeqOfH225RasUsageSpecification* pvalue); + +/**************************************************************/ +/* */ +/* RegistrationConfirm */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RegistrationConfirm { + struct { + unsigned nonStandardDataPresent : 1; + unsigned terminalAliasPresent : 1; + unsigned gatekeeperIdentifierPresent : 1; + unsigned alternateGatekeeperPresent : 1; + unsigned timeToLivePresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned willRespondToIRRPresent : 1; + unsigned preGrantedARQPresent : 1; + unsigned maintainConnectionPresent : 1; + unsigned serviceControlPresent : 1; + unsigned supportsAdditiveRegistrationPresent : 1; + unsigned terminalAliasPatternPresent : 1; + unsigned supportedPrefixesPresent : 1; + unsigned usageSpecPresent : 1; + unsigned featureServerAliasPresent : 1; + unsigned capacityReportingSpecPresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225ProtocolIdentifier protocolIdentifier; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225TransportAddress callSignalAddress; + H225_SeqOfH225AliasAddress terminalAlias; + H225GatekeeperIdentifier gatekeeperIdentifier; + H225EndpointIdentifier endpointIdentifier; + H225_SeqOfH225AlternateGK alternateGatekeeper; + H225TimeToLive timeToLive; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + ASN1BOOL willRespondToIRR; + H225RegistrationConfirm_preGrantedARQ preGrantedARQ; + ASN1BOOL maintainConnection; + H225_SeqOfH225ServiceControlSession serviceControl; + H225_SeqOfH225AddressPattern terminalAliasPattern; + H225_SeqOfH225SupportedPrefix supportedPrefixes; + H225_SeqOfH225RasUsageSpecification usageSpec; + H225AliasAddress featureServerAlias; + H225CapacityReportingSpecification capacityReportingSpec; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; +} H225RegistrationConfirm; + +EXTERN int asn1PE_H225RegistrationConfirm (OOCTXT* pctxt, H225RegistrationConfirm* pvalue); + +EXTERN int asn1PD_H225RegistrationConfirm (OOCTXT* pctxt, H225RegistrationConfirm* pvalue); + +/**************************************************************/ +/* */ +/* RegistrationRejectReason_invalidTerminalAliases */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RegistrationRejectReason_invalidTerminalAliases { + struct { + unsigned terminalAliasPresent : 1; + unsigned terminalAliasPatternPresent : 1; + unsigned supportedPrefixesPresent : 1; + } m; + H225_SeqOfH225AliasAddress terminalAlias; + H225_SeqOfH225AddressPattern terminalAliasPattern; + H225_SeqOfH225SupportedPrefix supportedPrefixes; +} H225RegistrationRejectReason_invalidTerminalAliases; + +EXTERN int asn1PE_H225RegistrationRejectReason_invalidTerminalAliases (OOCTXT* pctxt, H225RegistrationRejectReason_invalidTerminalAliases* pvalue); + +EXTERN int asn1PD_H225RegistrationRejectReason_invalidTerminalAliases (OOCTXT* pctxt, H225RegistrationRejectReason_invalidTerminalAliases* pvalue); + +/**************************************************************/ +/* */ +/* RegistrationRejectReason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225RegistrationRejectReason_discoveryRequired 1 +#define T_H225RegistrationRejectReason_invalidRevision 2 +#define T_H225RegistrationRejectReason_invalidCallSignalAddress 3 +#define T_H225RegistrationRejectReason_invalidRASAddress 4 +#define T_H225RegistrationRejectReason_duplicateAlias 5 +#define T_H225RegistrationRejectReason_invalidTerminalType 6 +#define T_H225RegistrationRejectReason_undefinedReason 7 +#define T_H225RegistrationRejectReason_transportNotSupported 8 +#define T_H225RegistrationRejectReason_transportQOSNotSupported 9 +#define T_H225RegistrationRejectReason_resourceUnavailable 10 +#define T_H225RegistrationRejectReason_invalidAlias 11 +#define T_H225RegistrationRejectReason_securityDenial 12 +#define T_H225RegistrationRejectReason_fullRegistrationRequired 13 +#define T_H225RegistrationRejectReason_additiveRegistrationNotSupported 14 +#define T_H225RegistrationRejectReason_invalidTerminalAliases 15 +#define T_H225RegistrationRejectReason_genericDataReason 16 +#define T_H225RegistrationRejectReason_neededFeatureNotSupported 17 +#define T_H225RegistrationRejectReason_securityError 18 +#define T_H225RegistrationRejectReason_extElem1 19 + +typedef struct EXTERN H225RegistrationRejectReason { + int t; + union { + /* t = 1 */ + /* t = 2 */ + /* t = 3 */ + /* t = 4 */ + /* t = 5 */ + H225_SeqOfH225AliasAddress *duplicateAlias; + /* t = 6 */ + /* t = 7 */ + /* t = 8 */ + /* t = 9 */ + /* t = 10 */ + /* t = 11 */ + /* t = 12 */ + /* t = 13 */ + /* t = 14 */ + /* t = 15 */ + H225RegistrationRejectReason_invalidTerminalAliases *invalidTerminalAliases; + /* t = 16 */ + /* t = 17 */ + /* t = 18 */ + H225SecurityErrors *securityError; + /* t = 19 */ + } u; +} H225RegistrationRejectReason; + +EXTERN int asn1PE_H225RegistrationRejectReason (OOCTXT* pctxt, H225RegistrationRejectReason* pvalue); + +EXTERN int asn1PD_H225RegistrationRejectReason (OOCTXT* pctxt, H225RegistrationRejectReason* pvalue); + +/**************************************************************/ +/* */ +/* RegistrationReject */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RegistrationReject { + struct { + unsigned nonStandardDataPresent : 1; + unsigned gatekeeperIdentifierPresent : 1; + unsigned altGKInfoPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225ProtocolIdentifier protocolIdentifier; + H225NonStandardParameter nonStandardData; + H225RegistrationRejectReason rejectReason; + H225GatekeeperIdentifier gatekeeperIdentifier; + H225AltGKInfo altGKInfo; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; +} H225RegistrationReject; + +EXTERN int asn1PE_H225RegistrationReject (OOCTXT* pctxt, H225RegistrationReject* pvalue); + +EXTERN int asn1PD_H225RegistrationReject (OOCTXT* pctxt, H225RegistrationReject* pvalue); + +/**************************************************************/ +/* */ +/* UnregRequestReason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225UnregRequestReason_reregistrationRequired 1 +#define T_H225UnregRequestReason_ttlExpired 2 +#define T_H225UnregRequestReason_securityDenial 3 +#define T_H225UnregRequestReason_undefinedReason 4 +#define T_H225UnregRequestReason_maintenance 5 +#define T_H225UnregRequestReason_securityError 6 +#define T_H225UnregRequestReason_extElem1 7 + +typedef struct EXTERN H225UnregRequestReason { + int t; + union { + /* t = 1 */ + /* t = 2 */ + /* t = 3 */ + /* t = 4 */ + /* t = 5 */ + /* t = 6 */ + H225SecurityErrors2 *securityError; + /* t = 7 */ + } u; +} H225UnregRequestReason; + +EXTERN int asn1PE_H225UnregRequestReason (OOCTXT* pctxt, H225UnregRequestReason* pvalue); + +EXTERN int asn1PD_H225UnregRequestReason (OOCTXT* pctxt, H225UnregRequestReason* pvalue); + +/**************************************************************/ +/* */ +/* UnregistrationRequest */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225UnregistrationRequest { + struct { + unsigned endpointAliasPresent : 1; + unsigned nonStandardDataPresent : 1; + unsigned endpointIdentifierPresent : 1; + unsigned alternateEndpointsPresent : 1; + unsigned gatekeeperIdentifierPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned reasonPresent : 1; + unsigned endpointAliasPatternPresent : 1; + unsigned supportedPrefixesPresent : 1; + unsigned alternateGatekeeperPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225_SeqOfH225TransportAddress callSignalAddress; + H225_SeqOfH225AliasAddress endpointAlias; + H225NonStandardParameter nonStandardData; + H225EndpointIdentifier endpointIdentifier; + H225_SeqOfH225Endpoint alternateEndpoints; + H225GatekeeperIdentifier gatekeeperIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225UnregRequestReason reason; + H225_SeqOfH225AddressPattern endpointAliasPattern; + H225_SeqOfH225SupportedPrefix supportedPrefixes; + H225_SeqOfH225AlternateGK alternateGatekeeper; + H225_SeqOfH225GenericData genericData; +} H225UnregistrationRequest; + +EXTERN int asn1PE_H225UnregistrationRequest (OOCTXT* pctxt, H225UnregistrationRequest* pvalue); + +EXTERN int asn1PD_H225UnregistrationRequest (OOCTXT* pctxt, H225UnregistrationRequest* pvalue); + +/**************************************************************/ +/* */ +/* UnregistrationConfirm */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225UnregistrationConfirm { + struct { + unsigned nonStandardDataPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225_SeqOfH225GenericData genericData; +} H225UnregistrationConfirm; + +EXTERN int asn1PE_H225UnregistrationConfirm (OOCTXT* pctxt, H225UnregistrationConfirm* pvalue); + +EXTERN int asn1PD_H225UnregistrationConfirm (OOCTXT* pctxt, H225UnregistrationConfirm* pvalue); + +/**************************************************************/ +/* */ +/* UnregRejectReason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225UnregRejectReason_notCurrentlyRegistered 1 +#define T_H225UnregRejectReason_callInProgress 2 +#define T_H225UnregRejectReason_undefinedReason 3 +#define T_H225UnregRejectReason_permissionDenied 4 +#define T_H225UnregRejectReason_securityDenial 5 +#define T_H225UnregRejectReason_securityError 6 +#define T_H225UnregRejectReason_extElem1 7 + +typedef struct EXTERN H225UnregRejectReason { + int t; + union { + /* t = 1 */ + /* t = 2 */ + /* t = 3 */ + /* t = 4 */ + /* t = 5 */ + /* t = 6 */ + H225SecurityErrors2 *securityError; + /* t = 7 */ + } u; +} H225UnregRejectReason; + +EXTERN int asn1PE_H225UnregRejectReason (OOCTXT* pctxt, H225UnregRejectReason* pvalue); + +EXTERN int asn1PD_H225UnregRejectReason (OOCTXT* pctxt, H225UnregRejectReason* pvalue); + +/**************************************************************/ +/* */ +/* UnregistrationReject */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225UnregistrationReject { + struct { + unsigned nonStandardDataPresent : 1; + unsigned altGKInfoPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225UnregRejectReason rejectReason; + H225NonStandardParameter nonStandardData; + H225AltGKInfo altGKInfo; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225_SeqOfH225GenericData genericData; +} H225UnregistrationReject; + +EXTERN int asn1PE_H225UnregistrationReject (OOCTXT* pctxt, H225UnregistrationReject* pvalue); + +EXTERN int asn1PD_H225UnregistrationReject (OOCTXT* pctxt, H225UnregistrationReject* pvalue); + +/**************************************************************/ +/* */ +/* CallModel */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225CallModel_direct 1 +#define T_H225CallModel_gatekeeperRouted 2 +#define T_H225CallModel_extElem1 3 + +typedef struct EXTERN H225CallModel { + int t; +} H225CallModel; + +EXTERN int asn1PE_H225CallModel (OOCTXT* pctxt, H225CallModel* pvalue); + +EXTERN int asn1PD_H225CallModel (OOCTXT* pctxt, H225CallModel* pvalue); + +/**************************************************************/ +/* */ +/* TransportQOS */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225TransportQOS_endpointControlled 1 +#define T_H225TransportQOS_gatekeeperControlled 2 +#define T_H225TransportQOS_noControl 3 +#define T_H225TransportQOS_extElem1 4 + +typedef struct EXTERN H225TransportQOS { + int t; +} H225TransportQOS; + +EXTERN int asn1PE_H225TransportQOS (OOCTXT* pctxt, H225TransportQOS* pvalue); + +EXTERN int asn1PD_H225TransportQOS (OOCTXT* pctxt, H225TransportQOS* pvalue); + +/**************************************************************/ +/* */ +/* AdmissionRequest */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225AdmissionRequest { + struct { + unsigned callModelPresent : 1; + unsigned destinationInfoPresent : 1; + unsigned destCallSignalAddressPresent : 1; + unsigned destExtraCallInfoPresent : 1; + unsigned srcCallSignalAddressPresent : 1; + unsigned nonStandardDataPresent : 1; + unsigned callServicesPresent : 1; + unsigned canMapAliasPresent : 1; + unsigned callIdentifierPresent : 1; + unsigned srcAlternativesPresent : 1; + unsigned destAlternativesPresent : 1; + unsigned gatekeeperIdentifierPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned transportQOSPresent : 1; + unsigned willSupplyUUIEsPresent : 1; + unsigned callLinkagePresent : 1; + unsigned gatewayDataRatePresent : 1; + unsigned capacityPresent : 1; + unsigned circuitInfoPresent : 1; + unsigned desiredProtocolsPresent : 1; + unsigned desiredTunnelledProtocolPresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + unsigned canMapSrcAliasPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225CallType callType; + H225CallModel callModel; + H225EndpointIdentifier endpointIdentifier; + H225_SeqOfH225AliasAddress destinationInfo; + H225TransportAddress destCallSignalAddress; + H225_SeqOfH225AliasAddress destExtraCallInfo; + H225_SeqOfH225AliasAddress srcInfo; + H225TransportAddress srcCallSignalAddress; + H225BandWidth bandWidth; + H225CallReferenceValue callReferenceValue; + H225NonStandardParameter nonStandardData; + H225QseriesOptions callServices; + H225ConferenceIdentifier conferenceID; + ASN1BOOL activeMC; + ASN1BOOL answerCall; + ASN1BOOL canMapAlias; + H225CallIdentifier callIdentifier; + H225_SeqOfH225Endpoint srcAlternatives; + H225_SeqOfH225Endpoint destAlternatives; + H225GatekeeperIdentifier gatekeeperIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225TransportQOS transportQOS; + ASN1BOOL willSupplyUUIEs; + H225CallLinkage callLinkage; + H225DataRate gatewayDataRate; + H225CallCapacity capacity; + H225CircuitInfo circuitInfo; + H225_SeqOfH225SupportedProtocols desiredProtocols; + H225TunnelledProtocol desiredTunnelledProtocol; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; + ASN1BOOL canMapSrcAlias; +} H225AdmissionRequest; + +EXTERN int asn1PE_H225AdmissionRequest (OOCTXT* pctxt, H225AdmissionRequest* pvalue); + +EXTERN int asn1PD_H225AdmissionRequest (OOCTXT* pctxt, H225AdmissionRequest* pvalue); + +/**************************************************************/ +/* */ +/* UUIEsRequested */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225UUIEsRequested { + struct { + unsigned statusPresent : 1; + unsigned statusInquiryPresent : 1; + unsigned setupAcknowledgePresent : 1; + unsigned notifyPresent : 1; + } m; + ASN1BOOL setup; + ASN1BOOL callProceeding; + ASN1BOOL connect; + ASN1BOOL alerting; + ASN1BOOL information; + ASN1BOOL releaseComplete; + ASN1BOOL facility; + ASN1BOOL progress; + ASN1BOOL empty; + ASN1BOOL status; + ASN1BOOL statusInquiry; + ASN1BOOL setupAcknowledge; + ASN1BOOL notify; +} H225UUIEsRequested; + +EXTERN int asn1PE_H225UUIEsRequested (OOCTXT* pctxt, H225UUIEsRequested* pvalue); + +EXTERN int asn1PD_H225UUIEsRequested (OOCTXT* pctxt, H225UUIEsRequested* pvalue); + +/**************************************************************/ +/* */ +/* AdmissionConfirm_language */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225AdmissionConfirm_language { + ASN1UINT n; + ASN1IA5String *elem; +} H225AdmissionConfirm_language; + +EXTERN int asn1PE_H225AdmissionConfirm_language (OOCTXT* pctxt, H225AdmissionConfirm_language* pvalue); + +EXTERN int asn1PD_H225AdmissionConfirm_language (OOCTXT* pctxt, H225AdmissionConfirm_language* pvalue); + +/**************************************************************/ +/* */ +/* AdmissionConfirm */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225AdmissionConfirm { + struct { + unsigned irrFrequencyPresent : 1; + unsigned nonStandardDataPresent : 1; + unsigned destinationInfoPresent : 1; + unsigned destExtraCallInfoPresent : 1; + unsigned destinationTypePresent : 1; + unsigned remoteExtensionAddressPresent : 1; + unsigned alternateEndpointsPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned transportQOSPresent : 1; + unsigned willRespondToIRRPresent : 1; + unsigned uuiesRequestedPresent : 1; + unsigned languagePresent : 1; + unsigned alternateTransportAddressesPresent : 1; + unsigned useSpecifiedTransportPresent : 1; + unsigned circuitInfoPresent : 1; + unsigned usageSpecPresent : 1; + unsigned supportedProtocolsPresent : 1; + unsigned serviceControlPresent : 1; + unsigned multipleCallsPresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + unsigned modifiedSrcInfoPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225BandWidth bandWidth; + H225CallModel callModel; + H225TransportAddress destCallSignalAddress; + ASN1USINT irrFrequency; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225AliasAddress destinationInfo; + H225_SeqOfH225AliasAddress destExtraCallInfo; + H225EndpointType destinationType; + H225_SeqOfH225AliasAddress remoteExtensionAddress; + H225_SeqOfH225Endpoint alternateEndpoints; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225TransportQOS transportQOS; + ASN1BOOL willRespondToIRR; + H225UUIEsRequested uuiesRequested; + H225AdmissionConfirm_language language; + H225AlternateTransportAddresses alternateTransportAddresses; + H225UseSpecifiedTransport useSpecifiedTransport; + H225CircuitInfo circuitInfo; + H225_SeqOfH225RasUsageSpecification usageSpec; + H225_SeqOfH225SupportedProtocols supportedProtocols; + H225_SeqOfH225ServiceControlSession serviceControl; + ASN1BOOL multipleCalls; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; + H225_SeqOfH225AliasAddress modifiedSrcInfo; +} H225AdmissionConfirm; + +EXTERN int asn1PE_H225AdmissionConfirm (OOCTXT* pctxt, H225AdmissionConfirm* pvalue); + +EXTERN int asn1PD_H225AdmissionConfirm (OOCTXT* pctxt, H225AdmissionConfirm* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225PartyNumber */ +/* */ +/**************************************************************/ + +/* List of H225PartyNumber */ +typedef DList H225_SeqOfH225PartyNumber; + +EXTERN int asn1PE_H225_SeqOfH225PartyNumber (OOCTXT* pctxt, H225_SeqOfH225PartyNumber* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225PartyNumber (OOCTXT* pctxt, H225_SeqOfH225PartyNumber* pvalue); + +/**************************************************************/ +/* */ +/* AdmissionRejectReason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225AdmissionRejectReason_calledPartyNotRegistered 1 +#define T_H225AdmissionRejectReason_invalidPermission 2 +#define T_H225AdmissionRejectReason_requestDenied 3 +#define T_H225AdmissionRejectReason_undefinedReason 4 +#define T_H225AdmissionRejectReason_callerNotRegistered 5 +#define T_H225AdmissionRejectReason_routeCallToGatekeeper 6 +#define T_H225AdmissionRejectReason_invalidEndpointIdentifier 7 +#define T_H225AdmissionRejectReason_resourceUnavailable 8 +#define T_H225AdmissionRejectReason_securityDenial 9 +#define T_H225AdmissionRejectReason_qosControlNotSupported 10 +#define T_H225AdmissionRejectReason_incompleteAddress 11 +#define T_H225AdmissionRejectReason_aliasesInconsistent 12 +#define T_H225AdmissionRejectReason_routeCallToSCN 13 +#define T_H225AdmissionRejectReason_exceedsCallCapacity 14 +#define T_H225AdmissionRejectReason_collectDestination 15 +#define T_H225AdmissionRejectReason_collectPIN 16 +#define T_H225AdmissionRejectReason_genericDataReason 17 +#define T_H225AdmissionRejectReason_neededFeatureNotSupported 18 +#define T_H225AdmissionRejectReason_securityErrors 19 +#define T_H225AdmissionRejectReason_securityDHmismatch 20 +#define T_H225AdmissionRejectReason_noRouteToDestination 21 +#define T_H225AdmissionRejectReason_unallocatedNumber 22 +#define T_H225AdmissionRejectReason_extElem1 23 + +typedef struct EXTERN H225AdmissionRejectReason { + int t; + union { + /* t = 1 */ + /* t = 2 */ + /* t = 3 */ + /* t = 4 */ + /* t = 5 */ + /* t = 6 */ + /* t = 7 */ + /* t = 8 */ + /* t = 9 */ + /* t = 10 */ + /* t = 11 */ + /* t = 12 */ + /* t = 13 */ + H225_SeqOfH225PartyNumber *routeCallToSCN; + /* t = 14 */ + /* t = 15 */ + /* t = 16 */ + /* t = 17 */ + /* t = 18 */ + /* t = 19 */ + H225SecurityErrors2 *securityErrors; + /* t = 20 */ + /* t = 21 */ + /* t = 22 */ + /* t = 23 */ + } u; +} H225AdmissionRejectReason; + +EXTERN int asn1PE_H225AdmissionRejectReason (OOCTXT* pctxt, H225AdmissionRejectReason* pvalue); + +EXTERN int asn1PD_H225AdmissionRejectReason (OOCTXT* pctxt, H225AdmissionRejectReason* pvalue); + +/**************************************************************/ +/* */ +/* AdmissionReject */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225AdmissionReject { + struct { + unsigned nonStandardDataPresent : 1; + unsigned altGKInfoPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned callSignalAddressPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned serviceControlPresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225AdmissionRejectReason rejectReason; + H225NonStandardParameter nonStandardData; + H225AltGKInfo altGKInfo; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225_SeqOfH225TransportAddress callSignalAddress; + H225ICV integrityCheckValue; + H225_SeqOfH225ServiceControlSession serviceControl; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; +} H225AdmissionReject; + +EXTERN int asn1PE_H225AdmissionReject (OOCTXT* pctxt, H225AdmissionReject* pvalue); + +EXTERN int asn1PD_H225AdmissionReject (OOCTXT* pctxt, H225AdmissionReject* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225BandwidthDetails */ +/* */ +/**************************************************************/ + +/* List of H225BandwidthDetails */ +typedef DList H225_SeqOfH225BandwidthDetails; + +EXTERN int asn1PE_H225_SeqOfH225BandwidthDetails (OOCTXT* pctxt, H225_SeqOfH225BandwidthDetails* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225BandwidthDetails (OOCTXT* pctxt, H225_SeqOfH225BandwidthDetails* pvalue); + +/**************************************************************/ +/* */ +/* BandwidthRequest */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225BandwidthRequest { + struct { + unsigned callTypePresent : 1; + unsigned nonStandardDataPresent : 1; + unsigned callIdentifierPresent : 1; + unsigned gatekeeperIdentifierPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned answeredCallPresent : 1; + unsigned callLinkagePresent : 1; + unsigned capacityPresent : 1; + unsigned usageInformationPresent : 1; + unsigned bandwidthDetailsPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225EndpointIdentifier endpointIdentifier; + H225ConferenceIdentifier conferenceID; + H225CallReferenceValue callReferenceValue; + H225CallType callType; + H225BandWidth bandWidth; + H225NonStandardParameter nonStandardData; + H225CallIdentifier callIdentifier; + H225GatekeeperIdentifier gatekeeperIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + ASN1BOOL answeredCall; + H225CallLinkage callLinkage; + H225CallCapacity capacity; + H225RasUsageInformation usageInformation; + H225_SeqOfH225BandwidthDetails bandwidthDetails; + H225_SeqOfH225GenericData genericData; +} H225BandwidthRequest; + +EXTERN int asn1PE_H225BandwidthRequest (OOCTXT* pctxt, H225BandwidthRequest* pvalue); + +EXTERN int asn1PD_H225BandwidthRequest (OOCTXT* pctxt, H225BandwidthRequest* pvalue); + +/**************************************************************/ +/* */ +/* BandwidthConfirm */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225BandwidthConfirm { + struct { + unsigned nonStandardDataPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned capacityPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225BandWidth bandWidth; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225CallCapacity capacity; + H225_SeqOfH225GenericData genericData; +} H225BandwidthConfirm; + +EXTERN int asn1PE_H225BandwidthConfirm (OOCTXT* pctxt, H225BandwidthConfirm* pvalue); + +EXTERN int asn1PD_H225BandwidthConfirm (OOCTXT* pctxt, H225BandwidthConfirm* pvalue); + +/**************************************************************/ +/* */ +/* BandRejectReason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225BandRejectReason_notBound 1 +#define T_H225BandRejectReason_invalidConferenceID 2 +#define T_H225BandRejectReason_invalidPermission 3 +#define T_H225BandRejectReason_insufficientResources 4 +#define T_H225BandRejectReason_invalidRevision 5 +#define T_H225BandRejectReason_undefinedReason 6 +#define T_H225BandRejectReason_securityDenial 7 +#define T_H225BandRejectReason_securityError 8 +#define T_H225BandRejectReason_extElem1 9 + +typedef struct EXTERN H225BandRejectReason { + int t; + union { + /* t = 1 */ + /* t = 2 */ + /* t = 3 */ + /* t = 4 */ + /* t = 5 */ + /* t = 6 */ + /* t = 7 */ + /* t = 8 */ + H225SecurityErrors2 *securityError; + /* t = 9 */ + } u; +} H225BandRejectReason; + +EXTERN int asn1PE_H225BandRejectReason (OOCTXT* pctxt, H225BandRejectReason* pvalue); + +EXTERN int asn1PD_H225BandRejectReason (OOCTXT* pctxt, H225BandRejectReason* pvalue); + +/**************************************************************/ +/* */ +/* BandwidthReject */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225BandwidthReject { + struct { + unsigned nonStandardDataPresent : 1; + unsigned altGKInfoPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225BandRejectReason rejectReason; + H225BandWidth allowedBandWidth; + H225NonStandardParameter nonStandardData; + H225AltGKInfo altGKInfo; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225_SeqOfH225GenericData genericData; +} H225BandwidthReject; + +EXTERN int asn1PE_H225BandwidthReject (OOCTXT* pctxt, H225BandwidthReject* pvalue); + +EXTERN int asn1PD_H225BandwidthReject (OOCTXT* pctxt, H225BandwidthReject* pvalue); + +/**************************************************************/ +/* */ +/* DisengageReason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225DisengageReason_forcedDrop 1 +#define T_H225DisengageReason_normalDrop 2 +#define T_H225DisengageReason_undefinedReason 3 +#define T_H225DisengageReason_extElem1 4 + +typedef struct EXTERN H225DisengageReason { + int t; +} H225DisengageReason; + +EXTERN int asn1PE_H225DisengageReason (OOCTXT* pctxt, H225DisengageReason* pvalue); + +EXTERN int asn1PD_H225DisengageReason (OOCTXT* pctxt, H225DisengageReason* pvalue); + +/**************************************************************/ +/* */ +/* DisengageRequest */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225DisengageRequest { + struct { + unsigned nonStandardDataPresent : 1; + unsigned callIdentifierPresent : 1; + unsigned gatekeeperIdentifierPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned answeredCallPresent : 1; + unsigned callLinkagePresent : 1; + unsigned capacityPresent : 1; + unsigned circuitInfoPresent : 1; + unsigned usageInformationPresent : 1; + unsigned terminationCausePresent : 1; + unsigned serviceControlPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225EndpointIdentifier endpointIdentifier; + H225ConferenceIdentifier conferenceID; + H225CallReferenceValue callReferenceValue; + H225DisengageReason disengageReason; + H225NonStandardParameter nonStandardData; + H225CallIdentifier callIdentifier; + H225GatekeeperIdentifier gatekeeperIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + ASN1BOOL answeredCall; + H225CallLinkage callLinkage; + H225CallCapacity capacity; + H225CircuitInfo circuitInfo; + H225RasUsageInformation usageInformation; + H225CallTerminationCause terminationCause; + H225_SeqOfH225ServiceControlSession serviceControl; + H225_SeqOfH225GenericData genericData; +} H225DisengageRequest; + +EXTERN int asn1PE_H225DisengageRequest (OOCTXT* pctxt, H225DisengageRequest* pvalue); + +EXTERN int asn1PD_H225DisengageRequest (OOCTXT* pctxt, H225DisengageRequest* pvalue); + +/**************************************************************/ +/* */ +/* DisengageConfirm */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225DisengageConfirm { + struct { + unsigned nonStandardDataPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned capacityPresent : 1; + unsigned circuitInfoPresent : 1; + unsigned usageInformationPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225CallCapacity capacity; + H225CircuitInfo circuitInfo; + H225RasUsageInformation usageInformation; + H225_SeqOfH225GenericData genericData; +} H225DisengageConfirm; + +EXTERN int asn1PE_H225DisengageConfirm (OOCTXT* pctxt, H225DisengageConfirm* pvalue); + +EXTERN int asn1PD_H225DisengageConfirm (OOCTXT* pctxt, H225DisengageConfirm* pvalue); + +/**************************************************************/ +/* */ +/* DisengageRejectReason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225DisengageRejectReason_notRegistered 1 +#define T_H225DisengageRejectReason_requestToDropOther 2 +#define T_H225DisengageRejectReason_securityDenial 3 +#define T_H225DisengageRejectReason_securityError 4 +#define T_H225DisengageRejectReason_extElem1 5 + +typedef struct EXTERN H225DisengageRejectReason { + int t; + union { + /* t = 1 */ + /* t = 2 */ + /* t = 3 */ + /* t = 4 */ + H225SecurityErrors2 *securityError; + /* t = 5 */ + } u; +} H225DisengageRejectReason; + +EXTERN int asn1PE_H225DisengageRejectReason (OOCTXT* pctxt, H225DisengageRejectReason* pvalue); + +EXTERN int asn1PD_H225DisengageRejectReason (OOCTXT* pctxt, H225DisengageRejectReason* pvalue); + +/**************************************************************/ +/* */ +/* DisengageReject */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225DisengageReject { + struct { + unsigned nonStandardDataPresent : 1; + unsigned altGKInfoPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225DisengageRejectReason rejectReason; + H225NonStandardParameter nonStandardData; + H225AltGKInfo altGKInfo; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225_SeqOfH225GenericData genericData; +} H225DisengageReject; + +EXTERN int asn1PE_H225DisengageReject (OOCTXT* pctxt, H225DisengageReject* pvalue); + +EXTERN int asn1PD_H225DisengageReject (OOCTXT* pctxt, H225DisengageReject* pvalue); + +/**************************************************************/ +/* */ +/* LocationRequest */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225LocationRequest { + struct { + unsigned endpointIdentifierPresent : 1; + unsigned nonStandardDataPresent : 1; + unsigned sourceInfoPresent : 1; + unsigned canMapAliasPresent : 1; + unsigned gatekeeperIdentifierPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned desiredProtocolsPresent : 1; + unsigned desiredTunnelledProtocolPresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + unsigned hopCountPresent : 1; + unsigned circuitInfoPresent : 1; + unsigned callIdentifierPresent : 1; + unsigned bandWidthPresent : 1; + unsigned sourceEndpointInfoPresent : 1; + unsigned canMapSrcAliasPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225EndpointIdentifier endpointIdentifier; + H225_SeqOfH225AliasAddress destinationInfo; + H225NonStandardParameter nonStandardData; + H225TransportAddress replyAddress; + H225_SeqOfH225AliasAddress sourceInfo; + ASN1BOOL canMapAlias; + H225GatekeeperIdentifier gatekeeperIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225_SeqOfH225SupportedProtocols desiredProtocols; + H225TunnelledProtocol desiredTunnelledProtocol; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; + ASN1UINT8 hopCount; + H225CircuitInfo circuitInfo; + H225CallIdentifier callIdentifier; + H225BandWidth bandWidth; + H225_SeqOfH225AliasAddress sourceEndpointInfo; + ASN1BOOL canMapSrcAlias; +} H225LocationRequest; + +EXTERN int asn1PE_H225LocationRequest (OOCTXT* pctxt, H225LocationRequest* pvalue); + +EXTERN int asn1PD_H225LocationRequest (OOCTXT* pctxt, H225LocationRequest* pvalue); + +/**************************************************************/ +/* */ +/* LocationConfirm */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225LocationConfirm { + struct { + unsigned nonStandardDataPresent : 1; + unsigned destinationInfoPresent : 1; + unsigned destExtraCallInfoPresent : 1; + unsigned destinationTypePresent : 1; + unsigned remoteExtensionAddressPresent : 1; + unsigned alternateEndpointsPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned alternateTransportAddressesPresent : 1; + unsigned supportedProtocolsPresent : 1; + unsigned multipleCallsPresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + unsigned circuitInfoPresent : 1; + unsigned serviceControlPresent : 1; + unsigned modifiedSrcInfoPresent : 1; + unsigned bandWidthPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225TransportAddress callSignalAddress; + H225TransportAddress rasAddress; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225AliasAddress destinationInfo; + H225_SeqOfH225AliasAddress destExtraCallInfo; + H225EndpointType destinationType; + H225_SeqOfH225AliasAddress remoteExtensionAddress; + H225_SeqOfH225Endpoint alternateEndpoints; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225AlternateTransportAddresses alternateTransportAddresses; + H225_SeqOfH225SupportedProtocols supportedProtocols; + ASN1BOOL multipleCalls; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; + H225CircuitInfo circuitInfo; + H225_SeqOfH225ServiceControlSession serviceControl; + H225_SeqOfH225AliasAddress modifiedSrcInfo; + H225BandWidth bandWidth; +} H225LocationConfirm; + +EXTERN int asn1PE_H225LocationConfirm (OOCTXT* pctxt, H225LocationConfirm* pvalue); + +EXTERN int asn1PD_H225LocationConfirm (OOCTXT* pctxt, H225LocationConfirm* pvalue); + +/**************************************************************/ +/* */ +/* LocationRejectReason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225LocationRejectReason_notRegistered 1 +#define T_H225LocationRejectReason_invalidPermission 2 +#define T_H225LocationRejectReason_requestDenied 3 +#define T_H225LocationRejectReason_undefinedReason 4 +#define T_H225LocationRejectReason_securityDenial 5 +#define T_H225LocationRejectReason_aliasesInconsistent 6 +#define T_H225LocationRejectReason_routeCalltoSCN 7 +#define T_H225LocationRejectReason_resourceUnavailable 8 +#define T_H225LocationRejectReason_genericDataReason 9 +#define T_H225LocationRejectReason_neededFeatureNotSupported 10 +#define T_H225LocationRejectReason_hopCountExceeded 11 +#define T_H225LocationRejectReason_incompleteAddress 12 +#define T_H225LocationRejectReason_securityError 13 +#define T_H225LocationRejectReason_securityDHmismatch 14 +#define T_H225LocationRejectReason_noRouteToDestination 15 +#define T_H225LocationRejectReason_unallocatedNumber 16 +#define T_H225LocationRejectReason_extElem1 17 + +typedef struct EXTERN H225LocationRejectReason { + int t; + union { + /* t = 1 */ + /* t = 2 */ + /* t = 3 */ + /* t = 4 */ + /* t = 5 */ + /* t = 6 */ + /* t = 7 */ + H225_SeqOfH225PartyNumber *routeCalltoSCN; + /* t = 8 */ + /* t = 9 */ + /* t = 10 */ + /* t = 11 */ + /* t = 12 */ + /* t = 13 */ + H225SecurityErrors2 *securityError; + /* t = 14 */ + /* t = 15 */ + /* t = 16 */ + /* t = 17 */ + } u; +} H225LocationRejectReason; + +EXTERN int asn1PE_H225LocationRejectReason (OOCTXT* pctxt, H225LocationRejectReason* pvalue); + +EXTERN int asn1PD_H225LocationRejectReason (OOCTXT* pctxt, H225LocationRejectReason* pvalue); + +/**************************************************************/ +/* */ +/* LocationReject */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225LocationReject { + struct { + unsigned nonStandardDataPresent : 1; + unsigned altGKInfoPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + unsigned serviceControlPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225LocationRejectReason rejectReason; + H225NonStandardParameter nonStandardData; + H225AltGKInfo altGKInfo; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; + H225_SeqOfH225ServiceControlSession serviceControl; +} H225LocationReject; + +EXTERN int asn1PE_H225LocationReject (OOCTXT* pctxt, H225LocationReject* pvalue); + +EXTERN int asn1PD_H225LocationReject (OOCTXT* pctxt, H225LocationReject* pvalue); + +/**************************************************************/ +/* */ +/* InfoRequest */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225InfoRequest { + struct { + unsigned nonStandardDataPresent : 1; + unsigned replyAddressPresent : 1; + unsigned callIdentifierPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned uuiesRequestedPresent : 1; + unsigned callLinkagePresent : 1; + unsigned usageInfoRequestedPresent : 1; + unsigned segmentedResponseSupportedPresent : 1; + unsigned nextSegmentRequestedPresent : 1; + unsigned capacityInfoRequestedPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225CallReferenceValue callReferenceValue; + H225NonStandardParameter nonStandardData; + H225TransportAddress replyAddress; + H225CallIdentifier callIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225UUIEsRequested uuiesRequested; + H225CallLinkage callLinkage; + H225RasUsageInfoTypes usageInfoRequested; + ASN1USINT nextSegmentRequested; + H225_SeqOfH225GenericData genericData; +} H225InfoRequest; + +EXTERN int asn1PE_H225InfoRequest (OOCTXT* pctxt, H225InfoRequest* pvalue); + +EXTERN int asn1PD_H225InfoRequest (OOCTXT* pctxt, H225InfoRequest* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225RTPSession */ +/* */ +/**************************************************************/ + +/* List of H225RTPSession */ +typedef DList H225_SeqOfH225RTPSession; + +EXTERN int asn1PE_H225_SeqOfH225RTPSession (OOCTXT* pctxt, H225_SeqOfH225RTPSession* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225RTPSession (OOCTXT* pctxt, H225_SeqOfH225RTPSession* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225TransportChannelInfo */ +/* */ +/**************************************************************/ + +/* List of H225TransportChannelInfo */ +typedef DList H225_SeqOfH225TransportChannelInfo; + +EXTERN int asn1PE_H225_SeqOfH225TransportChannelInfo (OOCTXT* pctxt, H225_SeqOfH225TransportChannelInfo* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225TransportChannelInfo (OOCTXT* pctxt, H225_SeqOfH225TransportChannelInfo* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225ConferenceIdentifier */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225_SeqOfH225ConferenceIdentifier { + ASN1UINT n; + H225ConferenceIdentifier *elem; +} H225_SeqOfH225ConferenceIdentifier; + +EXTERN int asn1PE_H225_SeqOfH225ConferenceIdentifier (OOCTXT* pctxt, H225_SeqOfH225ConferenceIdentifier* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225ConferenceIdentifier (OOCTXT* pctxt, H225_SeqOfH225ConferenceIdentifier* pvalue); + +/**************************************************************/ +/* */ +/* InfoRequestResponse_perCallInfo_element_pdu_element */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225InfoRequestResponse_perCallInfo_element_pdu_element { + H225H323_UU_PDU h323pdu; + ASN1BOOL sent; +} H225InfoRequestResponse_perCallInfo_element_pdu_element; + +EXTERN int asn1PE_H225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue); + +EXTERN int asn1PD_H225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_el */ +/* */ +/**************************************************************/ + +/* List of H225InfoRequestResponse_perCallInfo_element_pdu_element */ +typedef DList H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element; + +EXTERN int asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue); + +/**************************************************************/ +/* */ +/* InfoRequestResponse_perCallInfo_element */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225InfoRequestResponse_perCallInfo_element { + struct { + unsigned nonStandardDataPresent : 1; + unsigned originatorPresent : 1; + unsigned audioPresent : 1; + unsigned videoPresent : 1; + unsigned dataPresent : 1; + unsigned callIdentifierPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned substituteConfIDsPresent : 1; + unsigned pduPresent : 1; + unsigned callLinkagePresent : 1; + unsigned usageInformationPresent : 1; + unsigned circuitInfoPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225CallReferenceValue callReferenceValue; + H225ConferenceIdentifier conferenceID; + ASN1BOOL originator; + H225_SeqOfH225RTPSession audio; + H225_SeqOfH225RTPSession video; + H225_SeqOfH225TransportChannelInfo data; + H225TransportChannelInfo h245; + H225TransportChannelInfo callSignaling; + H225CallType callType; + H225BandWidth bandWidth; + H225CallModel callModel; + H225CallIdentifier callIdentifier; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225_SeqOfH225ConferenceIdentifier substituteConfIDs; + H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element pdu; + H225CallLinkage callLinkage; + H225RasUsageInformation usageInformation; + H225CircuitInfo circuitInfo; +} H225InfoRequestResponse_perCallInfo_element; + +EXTERN int asn1PE_H225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element* pvalue); + +EXTERN int asn1PD_H225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225InfoRequestResponse_perCallInfo_element */ +/* */ +/**************************************************************/ + +/* List of H225InfoRequestResponse_perCallInfo_element */ +typedef DList H225_SeqOfH225InfoRequestResponse_perCallInfo_element; + +EXTERN int asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element* pvalue); + +/**************************************************************/ +/* */ +/* InfoRequestResponseStatus */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225InfoRequestResponseStatus_complete 1 +#define T_H225InfoRequestResponseStatus_incomplete 2 +#define T_H225InfoRequestResponseStatus_segment 3 +#define T_H225InfoRequestResponseStatus_invalidCall 4 +#define T_H225InfoRequestResponseStatus_extElem1 5 + +typedef struct EXTERN H225InfoRequestResponseStatus { + int t; + union { + /* t = 1 */ + /* t = 2 */ + /* t = 3 */ + ASN1USINT segment; + /* t = 4 */ + /* t = 5 */ + } u; +} H225InfoRequestResponseStatus; + +EXTERN int asn1PE_H225InfoRequestResponseStatus (OOCTXT* pctxt, H225InfoRequestResponseStatus* pvalue); + +EXTERN int asn1PD_H225InfoRequestResponseStatus (OOCTXT* pctxt, H225InfoRequestResponseStatus* pvalue); + +/**************************************************************/ +/* */ +/* InfoRequestResponse */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225InfoRequestResponse { + struct { + unsigned nonStandardDataPresent : 1; + unsigned endpointAliasPresent : 1; + unsigned perCallInfoPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned needResponsePresent : 1; + unsigned capacityPresent : 1; + unsigned irrStatusPresent : 1; + unsigned unsolicitedPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225NonStandardParameter nonStandardData; + H225RequestSeqNum requestSeqNum; + H225EndpointType endpointType; + H225EndpointIdentifier endpointIdentifier; + H225TransportAddress rasAddress; + H225_SeqOfH225TransportAddress callSignalAddress; + H225_SeqOfH225AliasAddress endpointAlias; + H225_SeqOfH225InfoRequestResponse_perCallInfo_element perCallInfo; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + ASN1BOOL needResponse; + H225CallCapacity capacity; + H225InfoRequestResponseStatus irrStatus; + ASN1BOOL unsolicited; + H225_SeqOfH225GenericData genericData; +} H225InfoRequestResponse; + +EXTERN int asn1PE_H225InfoRequestResponse (OOCTXT* pctxt, H225InfoRequestResponse* pvalue); + +EXTERN int asn1PD_H225InfoRequestResponse (OOCTXT* pctxt, H225InfoRequestResponse* pvalue); + +/**************************************************************/ +/* */ +/* NonStandardMessage */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225NonStandardMessage { + struct { + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; +} H225NonStandardMessage; + +EXTERN int asn1PE_H225NonStandardMessage (OOCTXT* pctxt, H225NonStandardMessage* pvalue); + +EXTERN int asn1PD_H225NonStandardMessage (OOCTXT* pctxt, H225NonStandardMessage* pvalue); + +/**************************************************************/ +/* */ +/* UnknownMessageResponse */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225UnknownMessageResponse { + struct { + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned messageNotUnderstoodPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + ASN1DynOctStr messageNotUnderstood; +} H225UnknownMessageResponse; + +EXTERN int asn1PE_H225UnknownMessageResponse (OOCTXT* pctxt, H225UnknownMessageResponse* pvalue); + +EXTERN int asn1PD_H225UnknownMessageResponse (OOCTXT* pctxt, H225UnknownMessageResponse* pvalue); + +/**************************************************************/ +/* */ +/* RequestInProgress */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225RequestInProgress { + struct { + unsigned nonStandardDataPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + ASN1USINT delay; +} H225RequestInProgress; + +EXTERN int asn1PE_H225RequestInProgress (OOCTXT* pctxt, H225RequestInProgress* pvalue); + +EXTERN int asn1PD_H225RequestInProgress (OOCTXT* pctxt, H225RequestInProgress* pvalue); + +/**************************************************************/ +/* */ +/* ResourcesAvailableIndicate */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ResourcesAvailableIndicate { + struct { + unsigned nonStandardDataPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned capacityPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225ProtocolIdentifier protocolIdentifier; + H225NonStandardParameter nonStandardData; + H225EndpointIdentifier endpointIdentifier; + H225_SeqOfH225SupportedProtocols protocols; + ASN1BOOL almostOutOfResources; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225CallCapacity capacity; + H225_SeqOfH225GenericData genericData; +} H225ResourcesAvailableIndicate; + +EXTERN int asn1PE_H225ResourcesAvailableIndicate (OOCTXT* pctxt, H225ResourcesAvailableIndicate* pvalue); + +EXTERN int asn1PD_H225ResourcesAvailableIndicate (OOCTXT* pctxt, H225ResourcesAvailableIndicate* pvalue); + +/**************************************************************/ +/* */ +/* ResourcesAvailableConfirm */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ResourcesAvailableConfirm { + struct { + unsigned nonStandardDataPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225ProtocolIdentifier protocolIdentifier; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225_SeqOfH225GenericData genericData; +} H225ResourcesAvailableConfirm; + +EXTERN int asn1PE_H225ResourcesAvailableConfirm (OOCTXT* pctxt, H225ResourcesAvailableConfirm* pvalue); + +EXTERN int asn1PD_H225ResourcesAvailableConfirm (OOCTXT* pctxt, H225ResourcesAvailableConfirm* pvalue); + +/**************************************************************/ +/* */ +/* InfoRequestAck */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225InfoRequestAck { + struct { + unsigned nonStandardDataPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; +} H225InfoRequestAck; + +EXTERN int asn1PE_H225InfoRequestAck (OOCTXT* pctxt, H225InfoRequestAck* pvalue); + +EXTERN int asn1PD_H225InfoRequestAck (OOCTXT* pctxt, H225InfoRequestAck* pvalue); + +/**************************************************************/ +/* */ +/* InfoRequestNakReason */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225InfoRequestNakReason_notRegistered 1 +#define T_H225InfoRequestNakReason_securityDenial 2 +#define T_H225InfoRequestNakReason_undefinedReason 3 +#define T_H225InfoRequestNakReason_securityError 4 +#define T_H225InfoRequestNakReason_extElem1 5 + +typedef struct EXTERN H225InfoRequestNakReason { + int t; + union { + /* t = 1 */ + /* t = 2 */ + /* t = 3 */ + /* t = 4 */ + H225SecurityErrors2 *securityError; + /* t = 5 */ + } u; +} H225InfoRequestNakReason; + +EXTERN int asn1PE_H225InfoRequestNakReason (OOCTXT* pctxt, H225InfoRequestNakReason* pvalue); + +EXTERN int asn1PD_H225InfoRequestNakReason (OOCTXT* pctxt, H225InfoRequestNakReason* pvalue); + +/**************************************************************/ +/* */ +/* InfoRequestNak */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225InfoRequestNak { + struct { + unsigned nonStandardDataPresent : 1; + unsigned altGKInfoPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225NonStandardParameter nonStandardData; + H225InfoRequestNakReason nakReason; + H225AltGKInfo altGKInfo; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; +} H225InfoRequestNak; + +EXTERN int asn1PE_H225InfoRequestNak (OOCTXT* pctxt, H225InfoRequestNak* pvalue); + +EXTERN int asn1PD_H225InfoRequestNak (OOCTXT* pctxt, H225InfoRequestNak* pvalue); + +/**************************************************************/ +/* */ +/* ServiceControlIndication_callSpecific */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ServiceControlIndication_callSpecific { + H225CallIdentifier callIdentifier; + H225ConferenceIdentifier conferenceID; + ASN1BOOL answeredCall; +} H225ServiceControlIndication_callSpecific; + +EXTERN int asn1PE_H225ServiceControlIndication_callSpecific (OOCTXT* pctxt, H225ServiceControlIndication_callSpecific* pvalue); + +EXTERN int asn1PD_H225ServiceControlIndication_callSpecific (OOCTXT* pctxt, H225ServiceControlIndication_callSpecific* pvalue); + +/**************************************************************/ +/* */ +/* ServiceControlIndication */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ServiceControlIndication { + struct { + unsigned nonStandardDataPresent : 1; + unsigned endpointIdentifierPresent : 1; + unsigned callSpecificPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225ServiceControlSession serviceControl; + H225EndpointIdentifier endpointIdentifier; + H225ServiceControlIndication_callSpecific callSpecific; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; +} H225ServiceControlIndication; + +EXTERN int asn1PE_H225ServiceControlIndication (OOCTXT* pctxt, H225ServiceControlIndication* pvalue); + +EXTERN int asn1PD_H225ServiceControlIndication (OOCTXT* pctxt, H225ServiceControlIndication* pvalue); + +/**************************************************************/ +/* */ +/* ServiceControlResponse_result */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225ServiceControlResponse_result_started 1 +#define T_H225ServiceControlResponse_result_failed 2 +#define T_H225ServiceControlResponse_result_stopped 3 +#define T_H225ServiceControlResponse_result_notAvailable 4 +#define T_H225ServiceControlResponse_result_neededFeatureNotSupported 5 +#define T_H225ServiceControlResponse_result_extElem1 6 + +typedef struct EXTERN H225ServiceControlResponse_result { + int t; +} H225ServiceControlResponse_result; + +EXTERN int asn1PE_H225ServiceControlResponse_result (OOCTXT* pctxt, H225ServiceControlResponse_result* pvalue); + +EXTERN int asn1PD_H225ServiceControlResponse_result (OOCTXT* pctxt, H225ServiceControlResponse_result* pvalue); + +/**************************************************************/ +/* */ +/* ServiceControlResponse */ +/* */ +/**************************************************************/ + +typedef struct EXTERN H225ServiceControlResponse { + struct { + unsigned resultPresent : 1; + unsigned nonStandardDataPresent : 1; + unsigned tokensPresent : 1; + unsigned cryptoTokensPresent : 1; + unsigned integrityCheckValuePresent : 1; + unsigned featureSetPresent : 1; + unsigned genericDataPresent : 1; + } m; + H225RequestSeqNum requestSeqNum; + H225ServiceControlResponse_result result; + H225NonStandardParameter nonStandardData; + H225_SeqOfH225ClearToken tokens; + H225_SeqOfH225CryptoH323Token cryptoTokens; + H225ICV integrityCheckValue; + H225FeatureSet featureSet; + H225_SeqOfH225GenericData genericData; +} H225ServiceControlResponse; + +EXTERN int asn1PE_H225ServiceControlResponse (OOCTXT* pctxt, H225ServiceControlResponse* pvalue); + +EXTERN int asn1PD_H225ServiceControlResponse (OOCTXT* pctxt, H225ServiceControlResponse* pvalue); + +/**************************************************************/ +/* */ +/* _SeqOfH225AdmissionConfirm */ +/* */ +/**************************************************************/ + +/* List of H225AdmissionConfirm */ +typedef DList H225_SeqOfH225AdmissionConfirm; + +EXTERN int asn1PE_H225_SeqOfH225AdmissionConfirm (OOCTXT* pctxt, H225_SeqOfH225AdmissionConfirm* pvalue); + +EXTERN int asn1PD_H225_SeqOfH225AdmissionConfirm (OOCTXT* pctxt, H225_SeqOfH225AdmissionConfirm* pvalue); + +/**************************************************************/ +/* */ +/* RasMessage */ +/* */ +/**************************************************************/ + +/* Choice tag constants */ + +#define T_H225RasMessage_gatekeeperRequest 1 +#define T_H225RasMessage_gatekeeperConfirm 2 +#define T_H225RasMessage_gatekeeperReject 3 +#define T_H225RasMessage_registrationRequest 4 +#define T_H225RasMessage_registrationConfirm 5 +#define T_H225RasMessage_registrationReject 6 +#define T_H225RasMessage_unregistrationRequest 7 +#define T_H225RasMessage_unregistrationConfirm 8 +#define T_H225RasMessage_unregistrationReject 9 +#define T_H225RasMessage_admissionRequest 10 +#define T_H225RasMessage_admissionConfirm 11 +#define T_H225RasMessage_admissionReject 12 +#define T_H225RasMessage_bandwidthRequest 13 +#define T_H225RasMessage_bandwidthConfirm 14 +#define T_H225RasMessage_bandwidthReject 15 +#define T_H225RasMessage_disengageRequest 16 +#define T_H225RasMessage_disengageConfirm 17 +#define T_H225RasMessage_disengageReject 18 +#define T_H225RasMessage_locationRequest 19 +#define T_H225RasMessage_locationConfirm 20 +#define T_H225RasMessage_locationReject 21 +#define T_H225RasMessage_infoRequest 22 +#define T_H225RasMessage_infoRequestResponse 23 +#define T_H225RasMessage_nonStandardMessage 24 +#define T_H225RasMessage_unknownMessageResponse 25 +#define T_H225RasMessage_requestInProgress 26 +#define T_H225RasMessage_resourcesAvailableIndicate 27 +#define T_H225RasMessage_resourcesAvailableConfirm 28 +#define T_H225RasMessage_infoRequestAck 29 +#define T_H225RasMessage_infoRequestNak 30 +#define T_H225RasMessage_serviceControlIndication 31 +#define T_H225RasMessage_serviceControlResponse 32 +#define T_H225RasMessage_admissionConfirmSequence 33 +#define T_H225RasMessage_extElem1 34 + +typedef struct EXTERN H225RasMessage { + int t; + union { + /* t = 1 */ + H225GatekeeperRequest *gatekeeperRequest; + /* t = 2 */ + H225GatekeeperConfirm *gatekeeperConfirm; + /* t = 3 */ + H225GatekeeperReject *gatekeeperReject; + /* t = 4 */ + H225RegistrationRequest *registrationRequest; + /* t = 5 */ + H225RegistrationConfirm *registrationConfirm; + /* t = 6 */ + H225RegistrationReject *registrationReject; + /* t = 7 */ + H225UnregistrationRequest *unregistrationRequest; + /* t = 8 */ + H225UnregistrationConfirm *unregistrationConfirm; + /* t = 9 */ + H225UnregistrationReject *unregistrationReject; + /* t = 10 */ + H225AdmissionRequest *admissionRequest; + /* t = 11 */ + H225AdmissionConfirm *admissionConfirm; + /* t = 12 */ + H225AdmissionReject *admissionReject; + /* t = 13 */ + H225BandwidthRequest *bandwidthRequest; + /* t = 14 */ + H225BandwidthConfirm *bandwidthConfirm; + /* t = 15 */ + H225BandwidthReject *bandwidthReject; + /* t = 16 */ + H225DisengageRequest *disengageRequest; + /* t = 17 */ + H225DisengageConfirm *disengageConfirm; + /* t = 18 */ + H225DisengageReject *disengageReject; + /* t = 19 */ + H225LocationRequest *locationRequest; + /* t = 20 */ + H225LocationConfirm *locationConfirm; + /* t = 21 */ + H225LocationReject *locationReject; + /* t = 22 */ + H225InfoRequest *infoRequest; + /* t = 23 */ + H225InfoRequestResponse *infoRequestResponse; + /* t = 24 */ + H225NonStandardMessage *nonStandardMessage; + /* t = 25 */ + H225UnknownMessageResponse *unknownMessageResponse; + /* t = 26 */ + H225RequestInProgress *requestInProgress; + /* t = 27 */ + H225ResourcesAvailableIndicate *resourcesAvailableIndicate; + /* t = 28 */ + H225ResourcesAvailableConfirm *resourcesAvailableConfirm; + /* t = 29 */ + H225InfoRequestAck *infoRequestAck; + /* t = 30 */ + H225InfoRequestNak *infoRequestNak; + /* t = 31 */ + H225ServiceControlIndication *serviceControlIndication; + /* t = 32 */ + H225ServiceControlResponse *serviceControlResponse; + /* t = 33 */ + H225_SeqOfH225AdmissionConfirm *admissionConfirmSequence; + /* t = 34 */ + } u; +} H225RasMessage; + +EXTERN int asn1PE_H225RasMessage (OOCTXT* pctxt, H225RasMessage* pvalue); + +EXTERN int asn1PD_H225RasMessage (OOCTXT* pctxt, H225RasMessage* pvalue); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/addons/ooh323c/src/h323/H323-MESSAGESDec.c b/addons/ooh323c/src/h323/H323-MESSAGESDec.c new file mode 100644 index 000000000..2f8700b66 --- /dev/null +++ b/addons/ooh323c/src/h323/H323-MESSAGESDec.c @@ -0,0 +1,27199 @@ +/* + * Copyright (C) 2004-2005 by Objective Systems, Inc. + * + * This software is furnished under an open source license and may be + * used and copied only in accordance with the terms of this license. + * The text of the license may generally be found in the root + * directory of this installation in the COPYING file. It + * can also be viewed online at the following URL: + * + * http://www.obj-sys.com/open/license.html + * + * Any redistributions of this file including modified versions must + * maintain this copyright notice. + * + *****************************************************************************/ + +#include "ooasn1.h" +#include "H323-MESSAGES.h" +#include "eventHandler.h" + +/**************************************************************/ +/* */ +/* ScreeningIndicator */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225ScreeningIndicator (OOCTXT* pctxt, H225ScreeningIndicator* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (extbit) { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + + *pvalue = ui; + } + else { + stat = decodeConsUnsigned (pctxt, &ui, 0, 3); + if (stat != ASN_OK) return stat; + + switch (ui) { + case 0: *pvalue = userProvidedNotScreened; break; + case 1: *pvalue = userProvidedVerifiedAndPassed; break; + case 2: *pvalue = userProvidedVerifiedAndFailed; break; + case 3: *pvalue = networkProvided; break; + default: return ASN_E_INVENUM; + } + } + invokeUIntValue (pctxt, *pvalue); + + return (stat); +} + +/**************************************************************/ +/* */ +/* NumberDigits */ +/* */ +/**************************************************************/ + +extern EXTERN const char* gs_H323_MESSAGES_NumberDigits_CharSet; + +EXTERN int asn1PD_H225NumberDigits (OOCTXT* pctxt, H225NumberDigits* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeConstrainedStringEx (pctxt, pvalue, gs_H323_MESSAGES_NumberDigits_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, *pvalue); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TBCD_STRING */ +/* */ +/**************************************************************/ + +extern EXTERN const char* gs_H323_MESSAGES_TBCD_STRING_CharSet; + +EXTERN int asn1PD_H225TBCD_STRING (OOCTXT* pctxt, H225TBCD_STRING* pvalue) +{ + int stat = ASN_OK; + + stat = decodeConstrainedStringEx (pctxt, pvalue, gs_H323_MESSAGES_TBCD_STRING_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, *pvalue); + + return (stat); +} + +/**************************************************************/ +/* */ +/* GloballyUniqueID */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225GloballyUniqueID (OOCTXT* pctxt, H225GloballyUniqueID* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ConferenceIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225ConferenceIdentifier (OOCTXT* pctxt, H225ConferenceIdentifier* pvalue) +{ + int stat = ASN_OK; + + stat = asn1PD_H225GloballyUniqueID (pctxt, pvalue); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* RequestSeqNum */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225RequestSeqNum (OOCTXT* pctxt, H225RequestSeqNum* pvalue) +{ + int stat = ASN_OK; + + stat = decodeConsUInt16 (pctxt, pvalue, 1U, 65535U); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, *pvalue); + + return (stat); +} + +/**************************************************************/ +/* */ +/* GatekeeperIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225GatekeeperIdentifier (OOCTXT* pctxt, H225GatekeeperIdentifier* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBMPString (pctxt, pvalue, 0); + if (stat != ASN_OK) return stat; + invokeCharStr16BitValue (pctxt, pvalue->nchars, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* BandWidth */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225BandWidth (OOCTXT* pctxt, H225BandWidth* pvalue) +{ + int stat = ASN_OK; + + stat = decodeConsUnsigned (pctxt, pvalue, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, *pvalue); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CallReferenceValue */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CallReferenceValue (OOCTXT* pctxt, H225CallReferenceValue* pvalue) +{ + int stat = ASN_OK; + + stat = decodeConsUInt16 (pctxt, pvalue, 0U, 65535U); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, *pvalue); + + return (stat); +} + +/**************************************************************/ +/* */ +/* EndpointIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225EndpointIdentifier (OOCTXT* pctxt, H225EndpointIdentifier* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBMPString (pctxt, pvalue, 0); + if (stat != ASN_OK) return stat; + invokeCharStr16BitValue (pctxt, pvalue->nchars, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ProtocolIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225ProtocolIdentifier (OOCTXT* pctxt, H225ProtocolIdentifier* pvalue) +{ + int stat = ASN_OK; + + stat = decodeObjectIdentifier (pctxt, pvalue); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->numids, pvalue->subid); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TimeToLive */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TimeToLive (OOCTXT* pctxt, H225TimeToLive* pvalue) +{ + int stat = ASN_OK; + + stat = decodeConsUnsigned (pctxt, pvalue, 1U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, *pvalue); + + return (stat); +} + +/**************************************************************/ +/* */ +/* H248PackagesDescriptor */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225H248PackagesDescriptor (OOCTXT* pctxt, H225H248PackagesDescriptor* pvalue) +{ + int stat = ASN_OK; + + stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)pvalue); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* H248SignalsDescriptor */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225H248SignalsDescriptor (OOCTXT* pctxt, H225H248SignalsDescriptor* pvalue) +{ + int stat = ASN_OK; + + stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)pvalue); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* GenericIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225GenericIdentifier (OOCTXT* pctxt, H225GenericIdentifier* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 2); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* standard */ + case 0: + invokeStartElement (pctxt, "standard", -1); + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (extbit == 0) { + stat = decodeConsInteger (pctxt, &pvalue->u.standard, 0, 16383); + if (stat != ASN_OK) return stat; + } + else { + stat = decodeUnconsInteger (pctxt, &pvalue->u.standard); + if (stat != ASN_OK) return stat; + } + invokeIntValue (pctxt, pvalue->u.standard); + + invokeEndElement (pctxt, "standard", -1); + + break; + + /* oid */ + case 1: + invokeStartElement (pctxt, "oid", -1); + + pvalue->u.oid = ALLOC_ASN1ELEM (pctxt, ASN1OBJID); + + stat = decodeObjectIdentifier (pctxt, pvalue->u.oid); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->u.oid->numids, pvalue->u.oid->subid); + + invokeEndElement (pctxt, "oid", -1); + + break; + + /* nonStandard */ + case 2: + invokeStartElement (pctxt, "nonStandard", -1); + + pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H225GloballyUniqueID); + + stat = asn1PD_H225GloballyUniqueID (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandard", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 4; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_ipAddress_ip */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_ipAddress_ip (OOCTXT* pctxt, H225TransportAddress_ipAddress_ip* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_ipAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_ipAddress (OOCTXT* pctxt, H225TransportAddress_ipAddress* pvalue) +{ + int stat = ASN_OK; + + /* decode ip */ + + invokeStartElement (pctxt, "ip", -1); + + stat = asn1PD_H225TransportAddress_ipAddress_ip (pctxt, &pvalue->ip); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "ip", -1); + + /* decode port */ + + invokeStartElement (pctxt, "port", -1); + + stat = decodeConsUInt16 (pctxt, &pvalue->port, 0U, 65535U); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, pvalue->port); + + invokeEndElement (pctxt, "port", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_ipSourceRoute_ip */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_ip (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_ip* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_ipSourceRoute_route_element */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_route_element* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH225TransportAddress_ipSourceRoute_route_element */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225_SeqOfH225TransportAddress_ipSourceRoute_route_element* pvalue) +{ + int stat = ASN_OK; + ASN1UINT xx1; + + /* decode length determinant */ + + stat = decodeLength (pctxt, &pvalue->n); + if (stat != ASN_OK) return stat; + + /* decode elements */ + + ALLOC_ASN1ARRAY (pctxt, pvalue, H225TransportAddress_ipSourceRoute_route_element); + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + stat = asn1PD_H225TransportAddress_ipSourceRoute_route_element (pctxt, &pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_ipSourceRoute_routing */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_routing (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_routing* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 1); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* strict */ + case 0: + invokeStartElement (pctxt, "strict", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "strict", -1); + + break; + + /* loose */ + case 1: + invokeStartElement (pctxt, "loose", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "loose", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 3; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_ipSourceRoute */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_ipSourceRoute (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* decode ip */ + + invokeStartElement (pctxt, "ip", -1); + + stat = asn1PD_H225TransportAddress_ipSourceRoute_ip (pctxt, &pvalue->ip); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "ip", -1); + + /* decode port */ + + invokeStartElement (pctxt, "port", -1); + + stat = decodeConsUInt16 (pctxt, &pvalue->port, 0U, 65535U); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, pvalue->port); + + invokeEndElement (pctxt, "port", -1); + + /* decode route */ + + invokeStartElement (pctxt, "route", -1); + + stat = asn1PD_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (pctxt, &pvalue->route); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "route", -1); + + /* decode routing */ + + invokeStartElement (pctxt, "routing", -1); + + stat = asn1PD_H225TransportAddress_ipSourceRoute_routing (pctxt, &pvalue->routing); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "routing", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_ipxAddress_node */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_ipxAddress_node (OOCTXT* pctxt, H225TransportAddress_ipxAddress_node* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 6, 6, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_ipxAddress_netnum */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_ipxAddress_netnum (OOCTXT* pctxt, H225TransportAddress_ipxAddress_netnum* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_ipxAddress_port */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_ipxAddress_port (OOCTXT* pctxt, H225TransportAddress_ipxAddress_port* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 2, 2, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_ipxAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_ipxAddress (OOCTXT* pctxt, H225TransportAddress_ipxAddress* pvalue) +{ + int stat = ASN_OK; + + /* decode node */ + + invokeStartElement (pctxt, "node", -1); + + stat = asn1PD_H225TransportAddress_ipxAddress_node (pctxt, &pvalue->node); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "node", -1); + + /* decode netnum */ + + invokeStartElement (pctxt, "netnum", -1); + + stat = asn1PD_H225TransportAddress_ipxAddress_netnum (pctxt, &pvalue->netnum); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "netnum", -1); + + /* decode port */ + + invokeStartElement (pctxt, "port", -1); + + stat = asn1PD_H225TransportAddress_ipxAddress_port (pctxt, &pvalue->port); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "port", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_ip6Address_ip */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_ip6Address_ip (OOCTXT* pctxt, H225TransportAddress_ip6Address_ip* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_ip6Address */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_ip6Address (OOCTXT* pctxt, H225TransportAddress_ip6Address* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* decode ip */ + + invokeStartElement (pctxt, "ip", -1); + + stat = asn1PD_H225TransportAddress_ip6Address_ip (pctxt, &pvalue->ip); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "ip", -1); + + /* decode port */ + + invokeStartElement (pctxt, "port", -1); + + stat = decodeConsUInt16 (pctxt, &pvalue->port, 0U, 65535U); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, pvalue->port); + + invokeEndElement (pctxt, "port", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_netBios */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_netBios (OOCTXT* pctxt, H225TransportAddress_netBios* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress_nsap */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress_nsap (OOCTXT* pctxt, H225TransportAddress_nsap* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* H221NonStandard */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225H221NonStandard (OOCTXT* pctxt, H225H221NonStandard* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* decode t35CountryCode */ + + invokeStartElement (pctxt, "t35CountryCode", -1); + + stat = decodeConsUInt8 (pctxt, &pvalue->t35CountryCode, 0U, 255U); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, pvalue->t35CountryCode); + + invokeEndElement (pctxt, "t35CountryCode", -1); + + /* decode t35Extension */ + + invokeStartElement (pctxt, "t35Extension", -1); + + stat = decodeConsUInt8 (pctxt, &pvalue->t35Extension, 0U, 255U); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, pvalue->t35Extension); + + invokeEndElement (pctxt, "t35Extension", -1); + + /* decode manufacturerCode */ + + invokeStartElement (pctxt, "manufacturerCode", -1); + + stat = decodeConsUInt16 (pctxt, &pvalue->manufacturerCode, 0U, 65535U); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, pvalue->manufacturerCode); + + invokeEndElement (pctxt, "manufacturerCode", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NonStandardIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225NonStandardIdentifier (OOCTXT* pctxt, H225NonStandardIdentifier* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 1); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* object */ + case 0: + invokeStartElement (pctxt, "object", -1); + + pvalue->u.object = ALLOC_ASN1ELEM (pctxt, ASN1OBJID); + + stat = decodeObjectIdentifier (pctxt, pvalue->u.object); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->u.object->numids, pvalue->u.object->subid); + + invokeEndElement (pctxt, "object", -1); + + break; + + /* h221NonStandard */ + case 1: + invokeStartElement (pctxt, "h221NonStandard", -1); + + pvalue->u.h221NonStandard = ALLOC_ASN1ELEM (pctxt, H225H221NonStandard); + + stat = asn1PD_H225H221NonStandard (pctxt, pvalue->u.h221NonStandard); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "h221NonStandard", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 3; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NonStandardParameter */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225NonStandardParameter (OOCTXT* pctxt, H225NonStandardParameter* pvalue) +{ + int stat = ASN_OK; + + /* decode nonStandardIdentifier */ + + invokeStartElement (pctxt, "nonStandardIdentifier", -1); + + stat = asn1PD_H225NonStandardIdentifier (pctxt, &pvalue->nonStandardIdentifier); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardIdentifier", -1); + + /* decode data */ + + invokeStartElement (pctxt, "data", -1); + + stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->data); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->data.numocts, pvalue->data.data); + + invokeEndElement (pctxt, "data", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* TransportAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TransportAddress (OOCTXT* pctxt, H225TransportAddress* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 6); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* ipAddress */ + case 0: + invokeStartElement (pctxt, "ipAddress", -1); + + pvalue->u.ipAddress = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ipAddress); + + stat = asn1PD_H225TransportAddress_ipAddress (pctxt, pvalue->u.ipAddress); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "ipAddress", -1); + + break; + + /* ipSourceRoute */ + case 1: + invokeStartElement (pctxt, "ipSourceRoute", -1); + + pvalue->u.ipSourceRoute = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ipSourceRoute); + + stat = asn1PD_H225TransportAddress_ipSourceRoute (pctxt, pvalue->u.ipSourceRoute); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "ipSourceRoute", -1); + + break; + + /* ipxAddress */ + case 2: + invokeStartElement (pctxt, "ipxAddress", -1); + + pvalue->u.ipxAddress = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ipxAddress); + + stat = asn1PD_H225TransportAddress_ipxAddress (pctxt, pvalue->u.ipxAddress); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "ipxAddress", -1); + + break; + + /* ip6Address */ + case 3: + invokeStartElement (pctxt, "ip6Address", -1); + + pvalue->u.ip6Address = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ip6Address); + + stat = asn1PD_H225TransportAddress_ip6Address (pctxt, pvalue->u.ip6Address); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "ip6Address", -1); + + break; + + /* netBios */ + case 4: + invokeStartElement (pctxt, "netBios", -1); + + pvalue->u.netBios = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_netBios); + + stat = asn1PD_H225TransportAddress_netBios (pctxt, pvalue->u.netBios); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "netBios", -1); + + break; + + /* nsap */ + case 5: + invokeStartElement (pctxt, "nsap", -1); + + pvalue->u.nsap = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_nsap); + + stat = asn1PD_H225TransportAddress_nsap (pctxt, pvalue->u.nsap); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nsap", -1); + + break; + + /* nonStandardAddress */ + case 6: + invokeStartElement (pctxt, "nonStandardAddress", -1); + + pvalue->u.nonStandardAddress = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter); + + stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandardAddress); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardAddress", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 8; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* PublicTypeOfNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225PublicTypeOfNumber (OOCTXT* pctxt, H225PublicTypeOfNumber* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 5); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* unknown */ + case 0: + invokeStartElement (pctxt, "unknown", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "unknown", -1); + + break; + + /* internationalNumber */ + case 1: + invokeStartElement (pctxt, "internationalNumber", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "internationalNumber", -1); + + break; + + /* nationalNumber */ + case 2: + invokeStartElement (pctxt, "nationalNumber", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "nationalNumber", -1); + + break; + + /* networkSpecificNumber */ + case 3: + invokeStartElement (pctxt, "networkSpecificNumber", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "networkSpecificNumber", -1); + + break; + + /* subscriberNumber */ + case 4: + invokeStartElement (pctxt, "subscriberNumber", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "subscriberNumber", -1); + + break; + + /* abbreviatedNumber */ + case 5: + invokeStartElement (pctxt, "abbreviatedNumber", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "abbreviatedNumber", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 7; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* PublicPartyNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225PublicPartyNumber (OOCTXT* pctxt, H225PublicPartyNumber* pvalue) +{ + int stat = ASN_OK; + + /* decode publicTypeOfNumber */ + + invokeStartElement (pctxt, "publicTypeOfNumber", -1); + + stat = asn1PD_H225PublicTypeOfNumber (pctxt, &pvalue->publicTypeOfNumber); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "publicTypeOfNumber", -1); + + /* decode publicNumberDigits */ + + invokeStartElement (pctxt, "publicNumberDigits", -1); + + stat = asn1PD_H225NumberDigits (pctxt, &pvalue->publicNumberDigits); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "publicNumberDigits", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* PrivateTypeOfNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225PrivateTypeOfNumber (OOCTXT* pctxt, H225PrivateTypeOfNumber* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 5); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* unknown */ + case 0: + invokeStartElement (pctxt, "unknown", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "unknown", -1); + + break; + + /* level2RegionalNumber */ + case 1: + invokeStartElement (pctxt, "level2RegionalNumber", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "level2RegionalNumber", -1); + + break; + + /* level1RegionalNumber */ + case 2: + invokeStartElement (pctxt, "level1RegionalNumber", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "level1RegionalNumber", -1); + + break; + + /* pISNSpecificNumber */ + case 3: + invokeStartElement (pctxt, "pISNSpecificNumber", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "pISNSpecificNumber", -1); + + break; + + /* localNumber */ + case 4: + invokeStartElement (pctxt, "localNumber", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "localNumber", -1); + + break; + + /* abbreviatedNumber */ + case 5: + invokeStartElement (pctxt, "abbreviatedNumber", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "abbreviatedNumber", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 7; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* PrivatePartyNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225PrivatePartyNumber (OOCTXT* pctxt, H225PrivatePartyNumber* pvalue) +{ + int stat = ASN_OK; + + /* decode privateTypeOfNumber */ + + invokeStartElement (pctxt, "privateTypeOfNumber", -1); + + stat = asn1PD_H225PrivateTypeOfNumber (pctxt, &pvalue->privateTypeOfNumber); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "privateTypeOfNumber", -1); + + /* decode privateNumberDigits */ + + invokeStartElement (pctxt, "privateNumberDigits", -1); + + stat = asn1PD_H225NumberDigits (pctxt, &pvalue->privateNumberDigits); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "privateNumberDigits", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* PartyNumber */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225PartyNumber (OOCTXT* pctxt, H225PartyNumber* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 4); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* e164Number */ + case 0: + invokeStartElement (pctxt, "e164Number", -1); + + pvalue->u.e164Number = ALLOC_ASN1ELEM (pctxt, H225PublicPartyNumber); + + stat = asn1PD_H225PublicPartyNumber (pctxt, pvalue->u.e164Number); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "e164Number", -1); + + break; + + /* dataPartyNumber */ + case 1: + invokeStartElement (pctxt, "dataPartyNumber", -1); + + stat = asn1PD_H225NumberDigits (pctxt, &pvalue->u.dataPartyNumber); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dataPartyNumber", -1); + + break; + + /* telexPartyNumber */ + case 2: + invokeStartElement (pctxt, "telexPartyNumber", -1); + + stat = asn1PD_H225NumberDigits (pctxt, &pvalue->u.telexPartyNumber); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "telexPartyNumber", -1); + + break; + + /* privateNumber */ + case 3: + invokeStartElement (pctxt, "privateNumber", -1); + + pvalue->u.privateNumber = ALLOC_ASN1ELEM (pctxt, H225PrivatePartyNumber); + + stat = asn1PD_H225PrivatePartyNumber (pctxt, pvalue->u.privateNumber); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "privateNumber", -1); + + break; + + /* nationalStandardPartyNumber */ + case 4: + invokeStartElement (pctxt, "nationalStandardPartyNumber", -1); + + stat = asn1PD_H225NumberDigits (pctxt, &pvalue->u.nationalStandardPartyNumber); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nationalStandardPartyNumber", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 6; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ANSI_41_UIM_system_id */ +/* */ +/**************************************************************/ + +extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_sid_CharSet; + +extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_mid_CharSet; + +EXTERN int asn1PD_H225ANSI_41_UIM_system_id (OOCTXT* pctxt, H225ANSI_41_UIM_system_id* pvalue) +{ + static Asn1SizeCnst sid_lsize1 = { 0, 1, 4, 0 }; + static Asn1SizeCnst mid_lsize1 = { 0, 1, 4, 0 }; + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 1); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* sid */ + case 0: + invokeStartElement (pctxt, "sid", -1); + + addSizeConstraint (pctxt, &sid_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->u.sid, gs_H323_MESSAGES_ANSI_41_UIM_system_id_sid_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->u.sid); + + invokeEndElement (pctxt, "sid", -1); + + break; + + /* mid */ + case 1: + invokeStartElement (pctxt, "mid", -1); + + addSizeConstraint (pctxt, &mid_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->u.mid, gs_H323_MESSAGES_ANSI_41_UIM_system_id_mid_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->u.mid); + + invokeEndElement (pctxt, "mid", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 3; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ANSI_41_UIM_systemMyTypeCode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225ANSI_41_UIM_systemMyTypeCode (OOCTXT* pctxt, H225ANSI_41_UIM_systemMyTypeCode* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 1, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ANSI_41_UIM_systemAccessType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225ANSI_41_UIM_systemAccessType (OOCTXT* pctxt, H225ANSI_41_UIM_systemAccessType* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 1, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ANSI_41_UIM_qualificationInformationCode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225ANSI_41_UIM_qualificationInformationCode (OOCTXT* pctxt, H225ANSI_41_UIM_qualificationInformationCode* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 1, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* ANSI_41_UIM */ +/* */ +/**************************************************************/ + +extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_imsi_CharSet; + +extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_min_CharSet; + +extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mdn_CharSet; + +extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_msisdn_CharSet; + +extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_esn_CharSet; + +extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mscid_CharSet; + +extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_sesn_CharSet; + +extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_soc_CharSet; + +EXTERN int asn1PD_H225ANSI_41_UIM (OOCTXT* pctxt, H225ANSI_41_UIM* pvalue) +{ + static Asn1SizeCnst imsi_lsize1 = { 0, 3, 16, 0 }; + static Asn1SizeCnst min_lsize1 = { 0, 3, 16, 0 }; + static Asn1SizeCnst mdn_lsize1 = { 0, 3, 16, 0 }; + static Asn1SizeCnst msisdn_lsize1 = { 0, 3, 16, 0 }; + static Asn1SizeCnst esn_lsize1 = { 0, 16, 16, 0 }; + static Asn1SizeCnst mscid_lsize1 = { 0, 3, 16, 0 }; + static Asn1SizeCnst sesn_lsize1 = { 0, 16, 16, 0 }; + static Asn1SizeCnst soc_lsize1 = { 0, 3, 16, 0 }; + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.imsiPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.minPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.mdnPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.msisdnPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.esnPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.mscidPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.systemMyTypeCodePresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.systemAccessTypePresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.qualificationInformationCodePresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.sesnPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.socPresent = optbit; + + /* decode imsi */ + + if (pvalue->m.imsiPresent) { + invokeStartElement (pctxt, "imsi", -1); + + addSizeConstraint (pctxt, &imsi_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->imsi, gs_H323_MESSAGES_ANSI_41_UIM_imsi_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->imsi); + + invokeEndElement (pctxt, "imsi", -1); + } + + /* decode min */ + + if (pvalue->m.minPresent) { + invokeStartElement (pctxt, "min", -1); + + addSizeConstraint (pctxt, &min_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->min, gs_H323_MESSAGES_ANSI_41_UIM_min_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->min); + + invokeEndElement (pctxt, "min", -1); + } + + /* decode mdn */ + + if (pvalue->m.mdnPresent) { + invokeStartElement (pctxt, "mdn", -1); + + addSizeConstraint (pctxt, &mdn_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->mdn, gs_H323_MESSAGES_ANSI_41_UIM_mdn_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->mdn); + + invokeEndElement (pctxt, "mdn", -1); + } + + /* decode msisdn */ + + if (pvalue->m.msisdnPresent) { + invokeStartElement (pctxt, "msisdn", -1); + + addSizeConstraint (pctxt, &msisdn_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->msisdn, gs_H323_MESSAGES_ANSI_41_UIM_msisdn_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->msisdn); + + invokeEndElement (pctxt, "msisdn", -1); + } + + /* decode esn */ + + if (pvalue->m.esnPresent) { + invokeStartElement (pctxt, "esn", -1); + + addSizeConstraint (pctxt, &esn_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->esn, gs_H323_MESSAGES_ANSI_41_UIM_esn_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->esn); + + invokeEndElement (pctxt, "esn", -1); + } + + /* decode mscid */ + + if (pvalue->m.mscidPresent) { + invokeStartElement (pctxt, "mscid", -1); + + addSizeConstraint (pctxt, &mscid_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->mscid, gs_H323_MESSAGES_ANSI_41_UIM_mscid_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->mscid); + + invokeEndElement (pctxt, "mscid", -1); + } + + /* decode system_id */ + + invokeStartElement (pctxt, "system_id", -1); + + stat = asn1PD_H225ANSI_41_UIM_system_id (pctxt, &pvalue->system_id); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "system_id", -1); + + /* decode systemMyTypeCode */ + + if (pvalue->m.systemMyTypeCodePresent) { + invokeStartElement (pctxt, "systemMyTypeCode", -1); + + stat = asn1PD_H225ANSI_41_UIM_systemMyTypeCode (pctxt, &pvalue->systemMyTypeCode); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "systemMyTypeCode", -1); + } + + /* decode systemAccessType */ + + if (pvalue->m.systemAccessTypePresent) { + invokeStartElement (pctxt, "systemAccessType", -1); + + stat = asn1PD_H225ANSI_41_UIM_systemAccessType (pctxt, &pvalue->systemAccessType); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "systemAccessType", -1); + } + + /* decode qualificationInformationCode */ + + if (pvalue->m.qualificationInformationCodePresent) { + invokeStartElement (pctxt, "qualificationInformationCode", -1); + + stat = asn1PD_H225ANSI_41_UIM_qualificationInformationCode (pctxt, &pvalue->qualificationInformationCode); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "qualificationInformationCode", -1); + } + + /* decode sesn */ + + if (pvalue->m.sesnPresent) { + invokeStartElement (pctxt, "sesn", -1); + + addSizeConstraint (pctxt, &sesn_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->sesn, gs_H323_MESSAGES_ANSI_41_UIM_sesn_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->sesn); + + invokeEndElement (pctxt, "sesn", -1); + } + + /* decode soc */ + + if (pvalue->m.socPresent) { + invokeStartElement (pctxt, "soc", -1); + + addSizeConstraint (pctxt, &soc_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->soc, gs_H323_MESSAGES_ANSI_41_UIM_soc_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->soc); + + invokeEndElement (pctxt, "soc", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* GSM_UIM_tmsi */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225GSM_UIM_tmsi (OOCTXT* pctxt, H225GSM_UIM_tmsi* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 4, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* GSM_UIM */ +/* */ +/**************************************************************/ + +extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imsi_CharSet; + +extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_msisdn_CharSet; + +extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imei_CharSet; + +extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_hplmn_CharSet; + +extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_vplmn_CharSet; + +EXTERN int asn1PD_H225GSM_UIM (OOCTXT* pctxt, H225GSM_UIM* pvalue) +{ + static Asn1SizeCnst imsi_lsize1 = { 0, 3, 16, 0 }; + static Asn1SizeCnst msisdn_lsize1 = { 0, 3, 16, 0 }; + static Asn1SizeCnst imei_lsize1 = { 0, 15, 16, 0 }; + static Asn1SizeCnst hplmn_lsize1 = { 0, 1, 4, 0 }; + static Asn1SizeCnst vplmn_lsize1 = { 0, 1, 4, 0 }; + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.imsiPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.tmsiPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.msisdnPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.imeiPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.hplmnPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.vplmnPresent = optbit; + + /* decode imsi */ + + if (pvalue->m.imsiPresent) { + invokeStartElement (pctxt, "imsi", -1); + + addSizeConstraint (pctxt, &imsi_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->imsi, gs_H323_MESSAGES_GSM_UIM_imsi_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->imsi); + + invokeEndElement (pctxt, "imsi", -1); + } + + /* decode tmsi */ + + if (pvalue->m.tmsiPresent) { + invokeStartElement (pctxt, "tmsi", -1); + + stat = asn1PD_H225GSM_UIM_tmsi (pctxt, &pvalue->tmsi); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "tmsi", -1); + } + + /* decode msisdn */ + + if (pvalue->m.msisdnPresent) { + invokeStartElement (pctxt, "msisdn", -1); + + addSizeConstraint (pctxt, &msisdn_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->msisdn, gs_H323_MESSAGES_GSM_UIM_msisdn_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->msisdn); + + invokeEndElement (pctxt, "msisdn", -1); + } + + /* decode imei */ + + if (pvalue->m.imeiPresent) { + invokeStartElement (pctxt, "imei", -1); + + addSizeConstraint (pctxt, &imei_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->imei, gs_H323_MESSAGES_GSM_UIM_imei_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->imei); + + invokeEndElement (pctxt, "imei", -1); + } + + /* decode hplmn */ + + if (pvalue->m.hplmnPresent) { + invokeStartElement (pctxt, "hplmn", -1); + + addSizeConstraint (pctxt, &hplmn_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->hplmn, gs_H323_MESSAGES_GSM_UIM_hplmn_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->hplmn); + + invokeEndElement (pctxt, "hplmn", -1); + } + + /* decode vplmn */ + + if (pvalue->m.vplmnPresent) { + invokeStartElement (pctxt, "vplmn", -1); + + addSizeConstraint (pctxt, &vplmn_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->vplmn, gs_H323_MESSAGES_GSM_UIM_vplmn_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->vplmn); + + invokeEndElement (pctxt, "vplmn", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* MobileUIM */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225MobileUIM (OOCTXT* pctxt, H225MobileUIM* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 1); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* ansi_41_uim */ + case 0: + invokeStartElement (pctxt, "ansi_41_uim", -1); + + pvalue->u.ansi_41_uim = ALLOC_ASN1ELEM (pctxt, H225ANSI_41_UIM); + + stat = asn1PD_H225ANSI_41_UIM (pctxt, pvalue->u.ansi_41_uim); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "ansi_41_uim", -1); + + break; + + /* gsm_uim */ + case 1: + invokeStartElement (pctxt, "gsm_uim", -1); + + pvalue->u.gsm_uim = ALLOC_ASN1ELEM (pctxt, H225GSM_UIM); + + stat = asn1PD_H225GSM_UIM (pctxt, pvalue->u.gsm_uim); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "gsm_uim", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 3; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* AliasAddress */ +/* */ +/**************************************************************/ + +extern EXTERN const char* gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet; + +EXTERN int asn1PD_H225AliasAddress (OOCTXT* pctxt, H225AliasAddress* pvalue) +{ + static Asn1SizeCnst dialedDigits_lsize1 = { 0, 1, 128, 0 }; + static Asn1SizeCnst h323_ID_lsize1 = { 0, 1, 256, 0 }; + static Asn1SizeCnst url_ID_lsize1 = { 0, 1, 512, 0 }; + static Asn1SizeCnst email_ID_lsize1 = { 0, 1, 512, 0 }; + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + OOCTXT lctxt; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 1); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* dialedDigits */ + case 0: + invokeStartElement (pctxt, "dialedDigits", -1); + + addSizeConstraint (pctxt, &dialedDigits_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->u.dialedDigits, gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet, 4, 4, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->u.dialedDigits); + + invokeEndElement (pctxt, "dialedDigits", -1); + + break; + + /* h323_ID */ + case 1: + invokeStartElement (pctxt, "h323_ID", -1); + + addSizeConstraint (pctxt, &h323_ID_lsize1); + + stat = decodeBMPString (pctxt, &pvalue->u.h323_ID, 0); + if (stat != ASN_OK) return stat; + invokeCharStr16BitValue (pctxt, pvalue->u.h323_ID.nchars, pvalue->u.h323_ID.data); + + invokeEndElement (pctxt, "h323_ID", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 3; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + copyContext (&lctxt, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (pvalue->t) { + /* url_ID */ + case 3: + invokeStartElement (pctxt, "url_ID", -1); + + addSizeConstraint (pctxt, &url_ID_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->u.url_ID, 0, 8, 7, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->u.url_ID); + + invokeEndElement (pctxt, "url_ID", -1); + + break; + + /* transportID */ + case 4: + invokeStartElement (pctxt, "transportID", -1); + + pvalue->u.transportID = ALLOC_ASN1ELEM (pctxt, H225TransportAddress); + + stat = asn1PD_H225TransportAddress (pctxt, pvalue->u.transportID); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "transportID", -1); + + break; + + /* email_ID */ + case 5: + invokeStartElement (pctxt, "email_ID", -1); + + addSizeConstraint (pctxt, &email_ID_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->u.email_ID, 0, 8, 7, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->u.email_ID); + + invokeEndElement (pctxt, "email_ID", -1); + + break; + + /* partyNumber */ + case 6: + invokeStartElement (pctxt, "partyNumber", -1); + + pvalue->u.partyNumber = ALLOC_ASN1ELEM (pctxt, H225PartyNumber); + + stat = asn1PD_H225PartyNumber (pctxt, pvalue->u.partyNumber); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "partyNumber", -1); + + break; + + /* mobileUIM */ + case 7: + invokeStartElement (pctxt, "mobileUIM", -1); + + pvalue->u.mobileUIM = ALLOC_ASN1ELEM (pctxt, H225MobileUIM); + + stat = asn1PD_H225MobileUIM (pctxt, pvalue->u.mobileUIM); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "mobileUIM", -1); + + break; + + default:; + } + + copyContext (pctxt, &lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* Content_compound */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225Content_compound (OOCTXT* pctxt, H225Content_compound* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 512, 0 }; + int stat = ASN_OK; + H225EnumeratedParameter* pdata; + ASN1UINT count = 0; + ASN1UINT xx1; + + /* decode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeLength (pctxt, &count); + if (stat != ASN_OK) return stat; + + /* decode elements */ + + dListInit (pvalue); + + for (xx1 = 0; xx1 < count; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225EnumeratedParameter); + + stat = asn1PD_H225EnumeratedParameter (pctxt, (H225EnumeratedParameter*)pdata); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + dListAppendNode (pctxt, pvalue, pdata); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* Content_nested */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225Content_nested (OOCTXT* pctxt, H225Content_nested* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 }; + int stat = ASN_OK; + H225GenericData* pdata; + ASN1UINT count = 0; + ASN1UINT xx1; + + /* decode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeLength (pctxt, &count); + if (stat != ASN_OK) return stat; + + /* decode elements */ + + dListInit (pvalue); + + for (xx1 = 0; xx1 < count; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225GenericData); + + stat = asn1PD_H225GenericData (pctxt, (H225GenericData*)pdata); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + dListAppendNode (pctxt, pvalue, pdata); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* Content */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225Content (OOCTXT* pctxt, H225Content* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 11); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* raw */ + case 0: + invokeStartElement (pctxt, "raw", -1); + + pvalue->u.raw = ALLOC_ASN1ELEM (pctxt, ASN1DynOctStr); + + stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)pvalue->u.raw); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->u.raw->numocts, pvalue->u.raw->data); + + invokeEndElement (pctxt, "raw", -1); + + break; + + /* text */ + case 1: + invokeStartElement (pctxt, "text", -1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->u.text, 0, 8, 7, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->u.text); + + invokeEndElement (pctxt, "text", -1); + + break; + + /* unicode */ + case 2: + invokeStartElement (pctxt, "unicode", -1); + + stat = decodeBMPString (pctxt, &pvalue->u.unicode, 0); + if (stat != ASN_OK) return stat; + invokeCharStr16BitValue (pctxt, pvalue->u.unicode.nchars, pvalue->u.unicode.data); + + invokeEndElement (pctxt, "unicode", -1); + + break; + + /* bool_ */ + case 3: + invokeStartElement (pctxt, "bool_", -1); + + stat = DECODEBIT (pctxt, &pvalue->u.bool_); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->u.bool_); + + invokeEndElement (pctxt, "bool_", -1); + + break; + + /* number8 */ + case 4: + invokeStartElement (pctxt, "number8", -1); + + stat = decodeConsUInt8 (pctxt, &pvalue->u.number8, 0U, 255U); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, pvalue->u.number8); + + invokeEndElement (pctxt, "number8", -1); + + break; + + /* number16 */ + case 5: + invokeStartElement (pctxt, "number16", -1); + + stat = decodeConsUInt16 (pctxt, &pvalue->u.number16, 0U, 65535U); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, pvalue->u.number16); + + invokeEndElement (pctxt, "number16", -1); + + break; + + /* number32 */ + case 6: + invokeStartElement (pctxt, "number32", -1); + + stat = decodeConsUnsigned (pctxt, &pvalue->u.number32, 0U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, pvalue->u.number32); + + invokeEndElement (pctxt, "number32", -1); + + break; + + /* id */ + case 7: + invokeStartElement (pctxt, "id", -1); + + pvalue->u.id = ALLOC_ASN1ELEM (pctxt, H225GenericIdentifier); + + stat = asn1PD_H225GenericIdentifier (pctxt, pvalue->u.id); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "id", -1); + + break; + + /* alias */ + case 8: + invokeStartElement (pctxt, "alias", -1); + + pvalue->u.alias = ALLOC_ASN1ELEM (pctxt, H225AliasAddress); + + stat = asn1PD_H225AliasAddress (pctxt, pvalue->u.alias); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "alias", -1); + + break; + + /* transport */ + case 9: + invokeStartElement (pctxt, "transport", -1); + + pvalue->u.transport = ALLOC_ASN1ELEM (pctxt, H225TransportAddress); + + stat = asn1PD_H225TransportAddress (pctxt, pvalue->u.transport); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "transport", -1); + + break; + + /* compound */ + case 10: + invokeStartElement (pctxt, "compound", -1); + + pvalue->u.compound = ALLOC_ASN1ELEM (pctxt, H225Content_compound); + + stat = asn1PD_H225Content_compound (pctxt, pvalue->u.compound); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "compound", -1); + + break; + + /* nested */ + case 11: + invokeStartElement (pctxt, "nested", -1); + + pvalue->u.nested = ALLOC_ASN1ELEM (pctxt, H225Content_nested); + + stat = asn1PD_H225Content_nested (pctxt, pvalue->u.nested); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nested", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 13; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EnumeratedParameter */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225EnumeratedParameter (OOCTXT* pctxt, H225EnumeratedParameter* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.contentPresent = optbit; + + /* decode id */ + + invokeStartElement (pctxt, "id", -1); + + stat = asn1PD_H225GenericIdentifier (pctxt, &pvalue->id); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "id", -1); + + /* decode content */ + + if (pvalue->m.contentPresent) { + invokeStartElement (pctxt, "content", -1); + + stat = asn1PD_H225Content (pctxt, &pvalue->content); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "content", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* GenericData_parameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225GenericData_parameters (OOCTXT* pctxt, H225GenericData_parameters* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 512, 0 }; + int stat = ASN_OK; + H225EnumeratedParameter* pdata; + ASN1UINT count = 0; + ASN1UINT xx1; + + /* decode length determinant */ + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeLength (pctxt, &count); + if (stat != ASN_OK) return stat; + + /* decode elements */ + + dListInit (pvalue); + + for (xx1 = 0; xx1 < count; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225EnumeratedParameter); + + stat = asn1PD_H225EnumeratedParameter (pctxt, pdata); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + dListAppendNode (pctxt, pvalue, pdata); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* GenericData */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225GenericData (OOCTXT* pctxt, H225GenericData* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.parametersPresent = optbit; + + /* decode id */ + + invokeStartElement (pctxt, "id", -1); + + stat = asn1PD_H225GenericIdentifier (pctxt, &pvalue->id); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "id", -1); + + /* decode parameters */ + + if (pvalue->m.parametersPresent) { + invokeStartElement (pctxt, "parameters", -1); + + stat = asn1PD_H225GenericData_parameters (pctxt, &pvalue->parameters); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "parameters", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* FeatureDescriptor */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225FeatureDescriptor (OOCTXT* pctxt, H225FeatureDescriptor* pvalue) +{ + int stat = ASN_OK; + + stat = asn1PD_H225GenericData (pctxt, pvalue); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* FastStartToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225FastStartToken (OOCTXT* pctxt, H225FastStartToken* pvalue) +{ + int stat = ASN_OK; + + stat = asn1PD_H235ClearToken (pctxt, pvalue); + if (stat != ASN_OK) return stat; + + return (stat); +} + +/**************************************************************/ +/* */ +/* EncodedFastStartToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225EncodedFastStartToken (OOCTXT* pctxt, H225EncodedFastStartToken* pvalue) +{ + int stat = ASN_OK; + + stat = decodeOpenType (pctxt, &pvalue->data, &pvalue->numocts); + if (stat != ASN_OK) return stat; + invokeOpenTypeValue + (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* H323_UserInformation_user_data_user_information */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225H323_UserInformation_user_data_user_information (OOCTXT* pctxt, H225H323_UserInformation_user_data_user_information* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 131, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* EndpointType_set */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225EndpointType_set (OOCTXT* pctxt, H225EndpointType_set* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 32, 32, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeBitString (pctxt, + &pvalue->numbits, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* VendorIdentifier_productId */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225VendorIdentifier_productId (OOCTXT* pctxt, H225VendorIdentifier_productId* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* VendorIdentifier_versionId */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225VendorIdentifier_versionId (OOCTXT* pctxt, H225VendorIdentifier_versionId* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CicInfo_cic_element */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CicInfo_cic_element (OOCTXT* pctxt, H225CicInfo_cic_element* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 2, 4, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CicInfo_pointCode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CicInfo_pointCode (OOCTXT* pctxt, H225CicInfo_pointCode* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 2, 5, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CarrierInfo_carrierIdentificationCode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CarrierInfo_carrierIdentificationCode (OOCTXT* pctxt, H225CarrierInfo_carrierIdentificationCode* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 3, 4, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CallTerminationCause_releaseCompleteCauseIE */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CallTerminationCause_releaseCompleteCauseIE (OOCTXT* pctxt, H225CallTerminationCause_releaseCompleteCauseIE* pvalue) +{ + static Asn1SizeCnst lsize1 = { 0, 2, 32, 0 }; + int stat = ASN_OK; + + addSizeConstraint (pctxt, &lsize1); + + stat = decodeOctetString (pctxt, + &pvalue->numocts, + pvalue->data, + sizeof(pvalue->data)); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH225AliasAddress */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225_SeqOfH225AliasAddress (OOCTXT* pctxt, H225_SeqOfH225AliasAddress* pvalue) +{ + int stat = ASN_OK; + H225AliasAddress* pdata; + ASN1UINT count = 0; + ASN1UINT xx1; + int lstat; + + dListInit (pvalue); + + for (;;) { + /* decode length determinant */ + + lstat = decodeLength (pctxt, &count); + if (lstat != ASN_OK && lstat != ASN_OK_FRAG) { + return lstat; + } + + /* decode elements */ + + for (xx1 = 0; xx1 < count; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225AliasAddress); + + stat = asn1PD_H225AliasAddress (pctxt, pdata); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + dListAppendNode (pctxt, pvalue, pdata); + } + + if(lstat == ASN_OK) break; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* VendorIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225VendorIdentifier (OOCTXT* pctxt, H225VendorIdentifier* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.productIdPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.versionIdPresent = optbit; + + /* decode vendor */ + + invokeStartElement (pctxt, "vendor", -1); + + stat = asn1PD_H225H221NonStandard (pctxt, &pvalue->vendor); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "vendor", -1); + + /* decode productId */ + + if (pvalue->m.productIdPresent) { + invokeStartElement (pctxt, "productId", -1); + + stat = asn1PD_H225VendorIdentifier_productId (pctxt, &pvalue->productId); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "productId", -1); + } + + /* decode versionId */ + + if (pvalue->m.versionIdPresent) { + invokeStartElement (pctxt, "versionId", -1); + + stat = asn1PD_H225VendorIdentifier_versionId (pctxt, &pvalue->versionId); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "versionId", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 1 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.enterpriseNumberPresent = 1; + + invokeStartElement (pctxt, "enterpriseNumber", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->enterpriseNumber); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->enterpriseNumber.numids, pvalue->enterpriseNumber.subid); + + invokeEndElement (pctxt, "enterpriseNumber", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* GatekeeperInfo */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225GatekeeperInfo (OOCTXT* pctxt, H225GatekeeperInfo* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* DataRate */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225DataRate (OOCTXT* pctxt, H225DataRate* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.channelMultiplierPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + /* decode channelRate */ + + invokeStartElement (pctxt, "channelRate", -1); + + stat = asn1PD_H225BandWidth (pctxt, &pvalue->channelRate); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "channelRate", -1); + + /* decode channelMultiplier */ + + if (pvalue->m.channelMultiplierPresent) { + invokeStartElement (pctxt, "channelMultiplier", -1); + + stat = decodeConsUInt16 (pctxt, &pvalue->channelMultiplier, 1U, 256U); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, pvalue->channelMultiplier); + + invokeEndElement (pctxt, "channelMultiplier", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH225DataRate */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225_SeqOfH225DataRate (OOCTXT* pctxt, H225_SeqOfH225DataRate* pvalue) +{ + int stat = ASN_OK; + H225DataRate* pdata; + ASN1UINT count = 0; + ASN1UINT xx1; + int lstat; + + dListInit (pvalue); + + for (;;) { + /* decode length determinant */ + + lstat = decodeLength (pctxt, &count); + if (lstat != ASN_OK && lstat != ASN_OK_FRAG) { + return lstat; + } + + /* decode elements */ + + for (xx1 = 0; xx1 < count; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225DataRate); + + stat = asn1PD_H225DataRate (pctxt, pdata); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + dListAppendNode (pctxt, pvalue, pdata); + } + + if(lstat == ASN_OK) break; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* SupportedPrefix */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225SupportedPrefix (OOCTXT* pctxt, H225SupportedPrefix* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + /* decode prefix */ + + invokeStartElement (pctxt, "prefix", -1); + + stat = asn1PD_H225AliasAddress (pctxt, &pvalue->prefix); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "prefix", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH225SupportedPrefix */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225_SeqOfH225SupportedPrefix (OOCTXT* pctxt, H225_SeqOfH225SupportedPrefix* pvalue) +{ + int stat = ASN_OK; + H225SupportedPrefix* pdata; + ASN1UINT count = 0; + ASN1UINT xx1; + int lstat; + + dListInit (pvalue); + + for (;;) { + /* decode length determinant */ + + lstat = decodeLength (pctxt, &count); + if (lstat != ASN_OK && lstat != ASN_OK_FRAG) { + return lstat; + } + + /* decode elements */ + + for (xx1 = 0; xx1 < count; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225SupportedPrefix); + + stat = asn1PD_H225SupportedPrefix (pctxt, pdata); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + dListAppendNode (pctxt, pvalue, pdata); + } + + if(lstat == ASN_OK) break; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H310Caps */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225H310Caps (OOCTXT* pctxt, H225H310Caps* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 2 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.dataRatesSupportedPresent = 1; + + invokeStartElement (pctxt, "dataRatesSupported", -1); + + stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dataRatesSupported", -1); + break; + + case 1: + pvalue->m.supportedPrefixesPresent = 1; + + invokeStartElement (pctxt, "supportedPrefixes", -1); + + stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "supportedPrefixes", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H320Caps */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225H320Caps (OOCTXT* pctxt, H225H320Caps* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 2 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.dataRatesSupportedPresent = 1; + + invokeStartElement (pctxt, "dataRatesSupported", -1); + + stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dataRatesSupported", -1); + break; + + case 1: + pvalue->m.supportedPrefixesPresent = 1; + + invokeStartElement (pctxt, "supportedPrefixes", -1); + + stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "supportedPrefixes", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H321Caps */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225H321Caps (OOCTXT* pctxt, H225H321Caps* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 2 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.dataRatesSupportedPresent = 1; + + invokeStartElement (pctxt, "dataRatesSupported", -1); + + stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dataRatesSupported", -1); + break; + + case 1: + pvalue->m.supportedPrefixesPresent = 1; + + invokeStartElement (pctxt, "supportedPrefixes", -1); + + stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "supportedPrefixes", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H322Caps */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225H322Caps (OOCTXT* pctxt, H225H322Caps* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 2 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.dataRatesSupportedPresent = 1; + + invokeStartElement (pctxt, "dataRatesSupported", -1); + + stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dataRatesSupported", -1); + break; + + case 1: + pvalue->m.supportedPrefixesPresent = 1; + + invokeStartElement (pctxt, "supportedPrefixes", -1); + + stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "supportedPrefixes", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H323Caps */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225H323Caps (OOCTXT* pctxt, H225H323Caps* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 2 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.dataRatesSupportedPresent = 1; + + invokeStartElement (pctxt, "dataRatesSupported", -1); + + stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dataRatesSupported", -1); + break; + + case 1: + pvalue->m.supportedPrefixesPresent = 1; + + invokeStartElement (pctxt, "supportedPrefixes", -1); + + stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "supportedPrefixes", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H324Caps */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225H324Caps (OOCTXT* pctxt, H225H324Caps* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 2 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.dataRatesSupportedPresent = 1; + + invokeStartElement (pctxt, "dataRatesSupported", -1); + + stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dataRatesSupported", -1); + break; + + case 1: + pvalue->m.supportedPrefixesPresent = 1; + + invokeStartElement (pctxt, "supportedPrefixes", -1); + + stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "supportedPrefixes", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* VoiceCaps */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225VoiceCaps (OOCTXT* pctxt, H225VoiceCaps* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 2 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.dataRatesSupportedPresent = 1; + + invokeStartElement (pctxt, "dataRatesSupported", -1); + + stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dataRatesSupported", -1); + break; + + case 1: + pvalue->m.supportedPrefixesPresent = 1; + + invokeStartElement (pctxt, "supportedPrefixes", -1); + + stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "supportedPrefixes", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* T120OnlyCaps */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225T120OnlyCaps (OOCTXT* pctxt, H225T120OnlyCaps* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 2 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.dataRatesSupportedPresent = 1; + + invokeStartElement (pctxt, "dataRatesSupported", -1); + + stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dataRatesSupported", -1); + break; + + case 1: + pvalue->m.supportedPrefixesPresent = 1; + + invokeStartElement (pctxt, "supportedPrefixes", -1); + + stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "supportedPrefixes", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* NonStandardProtocol */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225NonStandardProtocol (OOCTXT* pctxt, H225NonStandardProtocol* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.dataRatesSupportedPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + /* decode dataRatesSupported */ + + if (pvalue->m.dataRatesSupportedPresent) { + invokeStartElement (pctxt, "dataRatesSupported", -1); + + stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dataRatesSupported", -1); + } + + /* decode supportedPrefixes */ + + invokeStartElement (pctxt, "supportedPrefixes", -1); + + stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "supportedPrefixes", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* T38FaxAnnexbOnlyCaps */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225T38FaxAnnexbOnlyCaps (OOCTXT* pctxt, H225T38FaxAnnexbOnlyCaps* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.dataRatesSupportedPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + /* decode dataRatesSupported */ + + if (pvalue->m.dataRatesSupportedPresent) { + invokeStartElement (pctxt, "dataRatesSupported", -1); + + stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dataRatesSupported", -1); + } + + /* decode supportedPrefixes */ + + invokeStartElement (pctxt, "supportedPrefixes", -1); + + stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "supportedPrefixes", -1); + + /* decode t38FaxProtocol */ + + invokeStartElement (pctxt, "t38FaxProtocol", -1); + + stat = asn1PD_H245DataProtocolCapability (pctxt, &pvalue->t38FaxProtocol); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "t38FaxProtocol", -1); + + /* decode t38FaxProfile */ + + invokeStartElement (pctxt, "t38FaxProfile", -1); + + stat = asn1PD_H245T38FaxProfile (pctxt, &pvalue->t38FaxProfile); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "t38FaxProfile", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* SIPCaps */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225SIPCaps (OOCTXT* pctxt, H225SIPCaps* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.dataRatesSupportedPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.supportedPrefixesPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + /* decode dataRatesSupported */ + + if (pvalue->m.dataRatesSupportedPresent) { + invokeStartElement (pctxt, "dataRatesSupported", -1); + + stat = asn1PD_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "dataRatesSupported", -1); + } + + /* decode supportedPrefixes */ + + if (pvalue->m.supportedPrefixesPresent) { + invokeStartElement (pctxt, "supportedPrefixes", -1); + + stat = asn1PD_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "supportedPrefixes", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* SupportedProtocols */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225SupportedProtocols (OOCTXT* pctxt, H225SupportedProtocols* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + OOCTXT lctxt; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 8); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* nonStandardData */ + case 0: + invokeStartElement (pctxt, "nonStandardData", -1); + + pvalue->u.nonStandardData = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter); + + stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + + break; + + /* h310 */ + case 1: + invokeStartElement (pctxt, "h310", -1); + + pvalue->u.h310 = ALLOC_ASN1ELEM (pctxt, H225H310Caps); + + stat = asn1PD_H225H310Caps (pctxt, pvalue->u.h310); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "h310", -1); + + break; + + /* h320 */ + case 2: + invokeStartElement (pctxt, "h320", -1); + + pvalue->u.h320 = ALLOC_ASN1ELEM (pctxt, H225H320Caps); + + stat = asn1PD_H225H320Caps (pctxt, pvalue->u.h320); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "h320", -1); + + break; + + /* h321 */ + case 3: + invokeStartElement (pctxt, "h321", -1); + + pvalue->u.h321 = ALLOC_ASN1ELEM (pctxt, H225H321Caps); + + stat = asn1PD_H225H321Caps (pctxt, pvalue->u.h321); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "h321", -1); + + break; + + /* h322 */ + case 4: + invokeStartElement (pctxt, "h322", -1); + + pvalue->u.h322 = ALLOC_ASN1ELEM (pctxt, H225H322Caps); + + stat = asn1PD_H225H322Caps (pctxt, pvalue->u.h322); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "h322", -1); + + break; + + /* h323 */ + case 5: + invokeStartElement (pctxt, "h323", -1); + + pvalue->u.h323 = ALLOC_ASN1ELEM (pctxt, H225H323Caps); + + stat = asn1PD_H225H323Caps (pctxt, pvalue->u.h323); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "h323", -1); + + break; + + /* h324 */ + case 6: + invokeStartElement (pctxt, "h324", -1); + + pvalue->u.h324 = ALLOC_ASN1ELEM (pctxt, H225H324Caps); + + stat = asn1PD_H225H324Caps (pctxt, pvalue->u.h324); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "h324", -1); + + break; + + /* voice */ + case 7: + invokeStartElement (pctxt, "voice", -1); + + pvalue->u.voice = ALLOC_ASN1ELEM (pctxt, H225VoiceCaps); + + stat = asn1PD_H225VoiceCaps (pctxt, pvalue->u.voice); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "voice", -1); + + break; + + /* t120_only */ + case 8: + invokeStartElement (pctxt, "t120_only", -1); + + pvalue->u.t120_only = ALLOC_ASN1ELEM (pctxt, H225T120OnlyCaps); + + stat = asn1PD_H225T120OnlyCaps (pctxt, pvalue->u.t120_only); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "t120_only", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 10; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + copyContext (&lctxt, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (pvalue->t) { + /* nonStandardProtocol */ + case 10: + invokeStartElement (pctxt, "nonStandardProtocol", -1); + + pvalue->u.nonStandardProtocol = ALLOC_ASN1ELEM (pctxt, H225NonStandardProtocol); + + stat = asn1PD_H225NonStandardProtocol (pctxt, pvalue->u.nonStandardProtocol); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardProtocol", -1); + + break; + + /* t38FaxAnnexbOnly */ + case 11: + invokeStartElement (pctxt, "t38FaxAnnexbOnly", -1); + + pvalue->u.t38FaxAnnexbOnly = ALLOC_ASN1ELEM (pctxt, H225T38FaxAnnexbOnlyCaps); + + stat = asn1PD_H225T38FaxAnnexbOnlyCaps (pctxt, pvalue->u.t38FaxAnnexbOnly); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "t38FaxAnnexbOnly", -1); + + break; + + /* sip */ + case 12: + invokeStartElement (pctxt, "sip", -1); + + pvalue->u.sip = ALLOC_ASN1ELEM (pctxt, H225SIPCaps); + + stat = asn1PD_H225SIPCaps (pctxt, pvalue->u.sip); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "sip", -1); + + break; + + default:; + } + + copyContext (pctxt, &lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH225SupportedProtocols */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225_SeqOfH225SupportedProtocols (OOCTXT* pctxt, H225_SeqOfH225SupportedProtocols* pvalue) +{ + int stat = ASN_OK; + H225SupportedProtocols* pdata; + ASN1UINT count = 0; + ASN1UINT xx1; + int lstat; + + dListInit (pvalue); + + for (;;) { + /* decode length determinant */ + + lstat = decodeLength (pctxt, &count); + if (lstat != ASN_OK && lstat != ASN_OK_FRAG) { + return lstat; + } + + /* decode elements */ + + for (xx1 = 0; xx1 < count; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225SupportedProtocols); + + stat = asn1PD_H225SupportedProtocols (pctxt, pdata); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + dListAppendNode (pctxt, pvalue, pdata); + } + + if(lstat == ASN_OK) break; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* GatewayInfo */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225GatewayInfo (OOCTXT* pctxt, H225GatewayInfo* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.protocolPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode protocol */ + + if (pvalue->m.protocolPresent) { + invokeStartElement (pctxt, "protocol", -1); + + stat = asn1PD_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->protocol); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "protocol", -1); + } + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* McuInfo */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225McuInfo (OOCTXT* pctxt, H225McuInfo* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 1 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.protocolPresent = 1; + + invokeStartElement (pctxt, "protocol", -1); + + stat = asn1PD_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->protocol); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "protocol", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TerminalInfo */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TerminalInfo (OOCTXT* pctxt, H225TerminalInfo* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TunnelledProtocolAlternateIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TunnelledProtocolAlternateIdentifier (OOCTXT* pctxt, H225TunnelledProtocolAlternateIdentifier* pvalue) +{ + static Asn1SizeCnst protocolType_lsize1 = { 0, 1, 64, 0 }; + static Asn1SizeCnst protocolVariant_lsize1 = { 0, 1, 64, 0 }; + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.protocolVariantPresent = optbit; + + /* decode protocolType */ + + invokeStartElement (pctxt, "protocolType", -1); + + addSizeConstraint (pctxt, &protocolType_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->protocolType, 0, 8, 7, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->protocolType); + + invokeEndElement (pctxt, "protocolType", -1); + + /* decode protocolVariant */ + + if (pvalue->m.protocolVariantPresent) { + invokeStartElement (pctxt, "protocolVariant", -1); + + addSizeConstraint (pctxt, &protocolVariant_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->protocolVariant, 0, 8, 7, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->protocolVariant); + + invokeEndElement (pctxt, "protocolVariant", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TunnelledProtocol_id */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TunnelledProtocol_id (OOCTXT* pctxt, H225TunnelledProtocol_id* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 1); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* tunnelledProtocolObjectID */ + case 0: + invokeStartElement (pctxt, "tunnelledProtocolObjectID", -1); + + pvalue->u.tunnelledProtocolObjectID = ALLOC_ASN1ELEM (pctxt, ASN1OBJID); + + stat = decodeObjectIdentifier (pctxt, pvalue->u.tunnelledProtocolObjectID); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->u.tunnelledProtocolObjectID->numids, pvalue->u.tunnelledProtocolObjectID->subid); + + invokeEndElement (pctxt, "tunnelledProtocolObjectID", -1); + + break; + + /* tunnelledProtocolAlternateID */ + case 1: + invokeStartElement (pctxt, "tunnelledProtocolAlternateID", -1); + + pvalue->u.tunnelledProtocolAlternateID = ALLOC_ASN1ELEM (pctxt, H225TunnelledProtocolAlternateIdentifier); + + stat = asn1PD_H225TunnelledProtocolAlternateIdentifier (pctxt, pvalue->u.tunnelledProtocolAlternateID); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "tunnelledProtocolAlternateID", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 3; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* TunnelledProtocol */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225TunnelledProtocol (OOCTXT* pctxt, H225TunnelledProtocol* pvalue) +{ + static Asn1SizeCnst subIdentifier_lsize1 = { 0, 1, 64, 0 }; + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.subIdentifierPresent = optbit; + + /* decode id */ + + invokeStartElement (pctxt, "id", -1); + + stat = asn1PD_H225TunnelledProtocol_id (pctxt, &pvalue->id); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "id", -1); + + /* decode subIdentifier */ + + if (pvalue->m.subIdentifierPresent) { + invokeStartElement (pctxt, "subIdentifier", -1); + + addSizeConstraint (pctxt, &subIdentifier_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->subIdentifier, 0, 8, 7, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->subIdentifier); + + invokeEndElement (pctxt, "subIdentifier", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH225TunnelledProtocol */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225_SeqOfH225TunnelledProtocol (OOCTXT* pctxt, H225_SeqOfH225TunnelledProtocol* pvalue) +{ + int stat = ASN_OK; + H225TunnelledProtocol* pdata; + ASN1UINT count = 0; + ASN1UINT xx1; + int lstat; + + dListInit (pvalue); + + for (;;) { + /* decode length determinant */ + + lstat = decodeLength (pctxt, &count); + if (lstat != ASN_OK && lstat != ASN_OK_FRAG) { + return lstat; + } + + /* decode elements */ + + for (xx1 = 0; xx1 < count; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225TunnelledProtocol); + + stat = asn1PD_H225TunnelledProtocol (pctxt, pdata); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + dListAppendNode (pctxt, pvalue, pdata); + } + + if(lstat == ASN_OK) break; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* EndpointType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225EndpointType (OOCTXT* pctxt, H225EndpointType* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + OOCTXT lctxt2; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardDataPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.vendorPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.gatekeeperPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.gatewayPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.mcuPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.terminalPresent = optbit; + + /* decode nonStandardData */ + + if (pvalue->m.nonStandardDataPresent) { + invokeStartElement (pctxt, "nonStandardData", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandardData); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandardData", -1); + } + + /* decode vendor */ + + if (pvalue->m.vendorPresent) { + invokeStartElement (pctxt, "vendor", -1); + + stat = asn1PD_H225VendorIdentifier (pctxt, &pvalue->vendor); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "vendor", -1); + } + + /* decode gatekeeper */ + + if (pvalue->m.gatekeeperPresent) { + invokeStartElement (pctxt, "gatekeeper", -1); + + stat = asn1PD_H225GatekeeperInfo (pctxt, &pvalue->gatekeeper); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "gatekeeper", -1); + } + + /* decode gateway */ + + if (pvalue->m.gatewayPresent) { + invokeStartElement (pctxt, "gateway", -1); + + stat = asn1PD_H225GatewayInfo (pctxt, &pvalue->gateway); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "gateway", -1); + } + + /* decode mcu */ + + if (pvalue->m.mcuPresent) { + invokeStartElement (pctxt, "mcu", -1); + + stat = asn1PD_H225McuInfo (pctxt, &pvalue->mcu); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "mcu", -1); + } + + /* decode terminal */ + + if (pvalue->m.terminalPresent) { + invokeStartElement (pctxt, "terminal", -1); + + stat = asn1PD_H225TerminalInfo (pctxt, &pvalue->terminal); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "terminal", -1); + } + + /* decode mc */ + + invokeStartElement (pctxt, "mc", -1); + + stat = DECODEBIT (pctxt, &pvalue->mc); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->mc); + + invokeEndElement (pctxt, "mc", -1); + + /* decode undefinedNode */ + + invokeStartElement (pctxt, "undefinedNode", -1); + + stat = DECODEBIT (pctxt, &pvalue->undefinedNode); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->undefinedNode); + + invokeEndElement (pctxt, "undefinedNode", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + if (i < 2 && openType.numocts > 0) { /* known element */ + copyContext (&lctxt2, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (i) { + case 0: + pvalue->m.setPresent = 1; + + invokeStartElement (pctxt, "set", -1); + + stat = asn1PD_H225EndpointType_set (pctxt, &pvalue->set); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "set", -1); + break; + + case 1: + pvalue->m.supportedTunnelledProtocolsPresent = 1; + + invokeStartElement (pctxt, "supportedTunnelledProtocols", -1); + + stat = asn1PD_H225_SeqOfH225TunnelledProtocol (pctxt, &pvalue->supportedTunnelledProtocols); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "supportedTunnelledProtocols", -1); + break; + + default: + pctxt->buffer.byteIndex += openType.numocts; + } + copyContext (pctxt, &lctxt2); + } + else { /* unknown element */ + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH225CallReferenceValue */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225_SeqOfH225CallReferenceValue (OOCTXT* pctxt, H225_SeqOfH225CallReferenceValue* pvalue) +{ + int stat = ASN_OK; + ASN1UINT xx1; + + /* decode length determinant */ + + stat = decodeLength (pctxt, &pvalue->n); + if (stat != ASN_OK) return stat; + + /* decode elements */ + + ALLOC_ASN1ARRAY (pctxt, pvalue, H225CallReferenceValue); + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + stat = asn1PD_H225CallReferenceValue (pctxt, &pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* Setup_UUIE_conferenceGoal */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225Setup_UUIE_conferenceGoal (OOCTXT* pctxt, H225Setup_UUIE_conferenceGoal* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + OOCTXT lctxt; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 2); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* create */ + case 0: + invokeStartElement (pctxt, "create", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "create", -1); + + break; + + /* join */ + case 1: + invokeStartElement (pctxt, "join", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "join", -1); + + break; + + /* invite */ + case 2: + invokeStartElement (pctxt, "invite", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "invite", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 4; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + copyContext (&lctxt, pctxt); + initContextBuffer (pctxt, openType.data, openType.numocts); + + switch (pvalue->t) { + /* capability_negotiation */ + case 4: + invokeStartElement (pctxt, "capability_negotiation", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "capability_negotiation", -1); + + break; + + /* callIndependentSupplementaryService */ + case 5: + invokeStartElement (pctxt, "callIndependentSupplementaryService", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "callIndependentSupplementaryService", -1); + + break; + + default:; + } + + copyContext (pctxt, &lctxt); + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* Q954Details */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225Q954Details (OOCTXT* pctxt, H225Q954Details* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* decode conferenceCalling */ + + invokeStartElement (pctxt, "conferenceCalling", -1); + + stat = DECODEBIT (pctxt, &pvalue->conferenceCalling); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->conferenceCalling); + + invokeEndElement (pctxt, "conferenceCalling", -1); + + /* decode threePartyService */ + + invokeStartElement (pctxt, "threePartyService", -1); + + stat = DECODEBIT (pctxt, &pvalue->threePartyService); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->threePartyService); + + invokeEndElement (pctxt, "threePartyService", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* QseriesOptions */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225QseriesOptions (OOCTXT* pctxt, H225QseriesOptions* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* decode q932Full */ + + invokeStartElement (pctxt, "q932Full", -1); + + stat = DECODEBIT (pctxt, &pvalue->q932Full); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->q932Full); + + invokeEndElement (pctxt, "q932Full", -1); + + /* decode q951Full */ + + invokeStartElement (pctxt, "q951Full", -1); + + stat = DECODEBIT (pctxt, &pvalue->q951Full); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->q951Full); + + invokeEndElement (pctxt, "q951Full", -1); + + /* decode q952Full */ + + invokeStartElement (pctxt, "q952Full", -1); + + stat = DECODEBIT (pctxt, &pvalue->q952Full); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->q952Full); + + invokeEndElement (pctxt, "q952Full", -1); + + /* decode q953Full */ + + invokeStartElement (pctxt, "q953Full", -1); + + stat = DECODEBIT (pctxt, &pvalue->q953Full); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->q953Full); + + invokeEndElement (pctxt, "q953Full", -1); + + /* decode q955Full */ + + invokeStartElement (pctxt, "q955Full", -1); + + stat = DECODEBIT (pctxt, &pvalue->q955Full); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->q955Full); + + invokeEndElement (pctxt, "q955Full", -1); + + /* decode q956Full */ + + invokeStartElement (pctxt, "q956Full", -1); + + stat = DECODEBIT (pctxt, &pvalue->q956Full); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->q956Full); + + invokeEndElement (pctxt, "q956Full", -1); + + /* decode q957Full */ + + invokeStartElement (pctxt, "q957Full", -1); + + stat = DECODEBIT (pctxt, &pvalue->q957Full); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->q957Full); + + invokeEndElement (pctxt, "q957Full", -1); + + /* decode q954Info */ + + invokeStartElement (pctxt, "q954Info", -1); + + stat = asn1PD_H225Q954Details (pctxt, &pvalue->q954Info); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "q954Info", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CallType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CallType (OOCTXT* pctxt, H225CallType* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 3); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* pointToPoint */ + case 0: + invokeStartElement (pctxt, "pointToPoint", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "pointToPoint", -1); + + break; + + /* oneToN */ + case 1: + invokeStartElement (pctxt, "oneToN", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "oneToN", -1); + + break; + + /* nToOne */ + case 2: + invokeStartElement (pctxt, "nToOne", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "nToOne", -1); + + break; + + /* nToN */ + case 3: + invokeStartElement (pctxt, "nToN", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "nToN", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 5; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CallIdentifier */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CallIdentifier (OOCTXT* pctxt, H225CallIdentifier* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* decode guid */ + + invokeStartElement (pctxt, "guid", -1); + + stat = asn1PD_H225GloballyUniqueID (pctxt, &pvalue->guid); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "guid", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* SecurityServiceMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225SecurityServiceMode (OOCTXT* pctxt, H225SecurityServiceMode* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 2); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* nonStandard */ + case 0: + invokeStartElement (pctxt, "nonStandard", -1); + + pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter); + + stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandard", -1); + + break; + + /* none */ + case 1: + invokeStartElement (pctxt, "none", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "none", -1); + + break; + + /* default_ */ + case 2: + invokeStartElement (pctxt, "default_", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "default_", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 4; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* SecurityCapabilities */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225SecurityCapabilities (OOCTXT* pctxt, H225SecurityCapabilities* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.nonStandardPresent = optbit; + + /* decode nonStandard */ + + if (pvalue->m.nonStandardPresent) { + invokeStartElement (pctxt, "nonStandard", -1); + + stat = asn1PD_H225NonStandardParameter (pctxt, &pvalue->nonStandard); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandard", -1); + } + + /* decode encryption */ + + invokeStartElement (pctxt, "encryption", -1); + + stat = asn1PD_H225SecurityServiceMode (pctxt, &pvalue->encryption); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "encryption", -1); + + /* decode authenticaton */ + + invokeStartElement (pctxt, "authenticaton", -1); + + stat = asn1PD_H225SecurityServiceMode (pctxt, &pvalue->authenticaton); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "authenticaton", -1); + + /* decode integrity */ + + invokeStartElement (pctxt, "integrity", -1); + + stat = asn1PD_H225SecurityServiceMode (pctxt, &pvalue->integrity); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "integrity", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* H245Security */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225H245Security (OOCTXT* pctxt, H225H245Security* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 3); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* nonStandard */ + case 0: + invokeStartElement (pctxt, "nonStandard", -1); + + pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter); + + stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandard", -1); + + break; + + /* noSecurity */ + case 1: + invokeStartElement (pctxt, "noSecurity", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "noSecurity", -1); + + break; + + /* tls */ + case 2: + invokeStartElement (pctxt, "tls", -1); + + pvalue->u.tls = ALLOC_ASN1ELEM (pctxt, H225SecurityCapabilities); + + stat = asn1PD_H225SecurityCapabilities (pctxt, pvalue->u.tls); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "tls", -1); + + break; + + /* ipsec */ + case 3: + invokeStartElement (pctxt, "ipsec", -1); + + pvalue->u.ipsec = ALLOC_ASN1ELEM (pctxt, H225SecurityCapabilities); + + stat = asn1PD_H225SecurityCapabilities (pctxt, pvalue->u.ipsec); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "ipsec", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 5; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH225H245Security */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225_SeqOfH225H245Security (OOCTXT* pctxt, H225_SeqOfH225H245Security* pvalue) +{ + int stat = ASN_OK; + H225H245Security* pdata; + ASN1UINT count = 0; + ASN1UINT xx1; + int lstat; + + dListInit (pvalue); + + for (;;) { + /* decode length determinant */ + + lstat = decodeLength (pctxt, &count); + if (lstat != ASN_OK && lstat != ASN_OK_FRAG) { + return lstat; + } + + /* decode elements */ + + for (xx1 = 0; xx1 < count; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225H245Security); + + stat = asn1PD_H225H245Security (pctxt, pdata); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + dListAppendNode (pctxt, pvalue, pdata); + } + + if(lstat == ASN_OK) break; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH225ClearToken */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225_SeqOfH225ClearToken (OOCTXT* pctxt, H225_SeqOfH225ClearToken* pvalue) +{ + int stat = ASN_OK; + H235ClearToken* pdata; + ASN1UINT count = 0; + ASN1UINT xx1; + int lstat; + + dListInit (pvalue); + + for (;;) { + /* decode length determinant */ + + lstat = decodeLength (pctxt, &count); + if (lstat != ASN_OK && lstat != ASN_OK_FRAG) { + return lstat; + } + + /* decode elements */ + + for (xx1 = 0; xx1 < count; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + pdata = ALLOC_ASN1ELEMDNODE (pctxt, H235ClearToken); + + stat = asn1PD_H235ClearToken (pctxt, pdata); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + dListAppendNode (pctxt, pvalue, pdata); + } + + if(lstat == ASN_OK) break; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoH323Token_cryptoEPPwdHash */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CryptoH323Token_cryptoEPPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPPwdHash* pvalue) +{ + int stat = ASN_OK; + + /* decode alias */ + + invokeStartElement (pctxt, "alias", -1); + + stat = asn1PD_H225AliasAddress (pctxt, &pvalue->alias); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "alias", -1); + + /* decode timeStamp */ + + invokeStartElement (pctxt, "timeStamp", -1); + + stat = asn1PD_H235TimeStamp (pctxt, &pvalue->timeStamp); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "timeStamp", -1); + + /* decode token */ + + invokeStartElement (pctxt, "token", -1); + + stat = asn1PD_H235HASHED (pctxt, &pvalue->token); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "token", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoH323Token_cryptoGKPwdHash */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CryptoH323Token_cryptoGKPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKPwdHash* pvalue) +{ + int stat = ASN_OK; + + /* decode gatekeeperId */ + + invokeStartElement (pctxt, "gatekeeperId", -1); + + stat = asn1PD_H225GatekeeperIdentifier (pctxt, &pvalue->gatekeeperId); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "gatekeeperId", -1); + + /* decode timeStamp */ + + invokeStartElement (pctxt, "timeStamp", -1); + + stat = asn1PD_H235TimeStamp (pctxt, &pvalue->timeStamp); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "timeStamp", -1); + + /* decode token */ + + invokeStartElement (pctxt, "token", -1); + + stat = asn1PD_H235HASHED (pctxt, &pvalue->token); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "token", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoH323Token_cryptoEPCert */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CryptoH323Token_cryptoEPCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPCert* pvalue) +{ + int stat = ASN_OK; + + /* decode toBeSigned */ + + invokeStartElement (pctxt, "toBeSigned", -1); + + stat = asn1PD_H235EncodedPwdCertToken (pctxt, &pvalue->toBeSigned); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "toBeSigned", -1); + + /* decode algorithmOID */ + + invokeStartElement (pctxt, "algorithmOID", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid); + + invokeEndElement (pctxt, "algorithmOID", -1); + + /* decode paramS */ + + invokeStartElement (pctxt, "paramS", -1); + + stat = asn1PD_H235Params (pctxt, &pvalue->paramS); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "paramS", -1); + + /* decode signature */ + + invokeStartElement (pctxt, "signature", -1); + + stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->signature); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->signature.numbits, pvalue->signature.data); + + invokeEndElement (pctxt, "signature", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoH323Token_cryptoGKCert */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CryptoH323Token_cryptoGKCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKCert* pvalue) +{ + int stat = ASN_OK; + + /* decode toBeSigned */ + + invokeStartElement (pctxt, "toBeSigned", -1); + + stat = asn1PD_H235EncodedPwdCertToken (pctxt, &pvalue->toBeSigned); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "toBeSigned", -1); + + /* decode algorithmOID */ + + invokeStartElement (pctxt, "algorithmOID", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid); + + invokeEndElement (pctxt, "algorithmOID", -1); + + /* decode paramS */ + + invokeStartElement (pctxt, "paramS", -1); + + stat = asn1PD_H235Params (pctxt, &pvalue->paramS); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "paramS", -1); + + /* decode signature */ + + invokeStartElement (pctxt, "signature", -1); + + stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->signature); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->signature.numbits, pvalue->signature.data); + + invokeEndElement (pctxt, "signature", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoH323Token_cryptoFastStart */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CryptoH323Token_cryptoFastStart (OOCTXT* pctxt, H225CryptoH323Token_cryptoFastStart* pvalue) +{ + int stat = ASN_OK; + + /* decode toBeSigned */ + + invokeStartElement (pctxt, "toBeSigned", -1); + + stat = asn1PD_H225EncodedFastStartToken (pctxt, &pvalue->toBeSigned); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "toBeSigned", -1); + + /* decode algorithmOID */ + + invokeStartElement (pctxt, "algorithmOID", -1); + + stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID); + if (stat != ASN_OK) return stat; + invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid); + + invokeEndElement (pctxt, "algorithmOID", -1); + + /* decode paramS */ + + invokeStartElement (pctxt, "paramS", -1); + + stat = asn1PD_H235Params (pctxt, &pvalue->paramS); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "paramS", -1); + + /* decode signature */ + + invokeStartElement (pctxt, "signature", -1); + + stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->signature); + if (stat != ASN_OK) return stat; + + invokeBitStrValue (pctxt, pvalue->signature.numbits, pvalue->signature.data); + + invokeEndElement (pctxt, "signature", -1); + + return (stat); +} + +/**************************************************************/ +/* */ +/* CryptoH323Token */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CryptoH323Token (OOCTXT* pctxt, H225CryptoH323Token* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 7); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* cryptoEPPwdHash */ + case 0: + invokeStartElement (pctxt, "cryptoEPPwdHash", -1); + + pvalue->u.cryptoEPPwdHash = ALLOC_ASN1ELEM (pctxt, H225CryptoH323Token_cryptoEPPwdHash); + + stat = asn1PD_H225CryptoH323Token_cryptoEPPwdHash (pctxt, pvalue->u.cryptoEPPwdHash); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "cryptoEPPwdHash", -1); + + break; + + /* cryptoGKPwdHash */ + case 1: + invokeStartElement (pctxt, "cryptoGKPwdHash", -1); + + pvalue->u.cryptoGKPwdHash = ALLOC_ASN1ELEM (pctxt, H225CryptoH323Token_cryptoGKPwdHash); + + stat = asn1PD_H225CryptoH323Token_cryptoGKPwdHash (pctxt, pvalue->u.cryptoGKPwdHash); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "cryptoGKPwdHash", -1); + + break; + + /* cryptoEPPwdEncr */ + case 2: + invokeStartElement (pctxt, "cryptoEPPwdEncr", -1); + + pvalue->u.cryptoEPPwdEncr = ALLOC_ASN1ELEM (pctxt, H235ENCRYPTED); + + stat = asn1PD_H235ENCRYPTED (pctxt, pvalue->u.cryptoEPPwdEncr); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "cryptoEPPwdEncr", -1); + + break; + + /* cryptoGKPwdEncr */ + case 3: + invokeStartElement (pctxt, "cryptoGKPwdEncr", -1); + + pvalue->u.cryptoGKPwdEncr = ALLOC_ASN1ELEM (pctxt, H235ENCRYPTED); + + stat = asn1PD_H235ENCRYPTED (pctxt, pvalue->u.cryptoGKPwdEncr); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "cryptoGKPwdEncr", -1); + + break; + + /* cryptoEPCert */ + case 4: + invokeStartElement (pctxt, "cryptoEPCert", -1); + + pvalue->u.cryptoEPCert = ALLOC_ASN1ELEM (pctxt, H225CryptoH323Token_cryptoEPCert); + + stat = asn1PD_H225CryptoH323Token_cryptoEPCert (pctxt, pvalue->u.cryptoEPCert); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "cryptoEPCert", -1); + + break; + + /* cryptoGKCert */ + case 5: + invokeStartElement (pctxt, "cryptoGKCert", -1); + + pvalue->u.cryptoGKCert = ALLOC_ASN1ELEM (pctxt, H225CryptoH323Token_cryptoGKCert); + + stat = asn1PD_H225CryptoH323Token_cryptoGKCert (pctxt, pvalue->u.cryptoGKCert); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "cryptoGKCert", -1); + + break; + + /* cryptoFastStart */ + case 6: + invokeStartElement (pctxt, "cryptoFastStart", -1); + + pvalue->u.cryptoFastStart = ALLOC_ASN1ELEM (pctxt, H225CryptoH323Token_cryptoFastStart); + + stat = asn1PD_H225CryptoH323Token_cryptoFastStart (pctxt, pvalue->u.cryptoFastStart); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "cryptoFastStart", -1); + + break; + + /* nestedcryptoToken */ + case 7: + invokeStartElement (pctxt, "nestedcryptoToken", -1); + + pvalue->u.nestedcryptoToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken); + + stat = asn1PD_H235CryptoToken (pctxt, pvalue->u.nestedcryptoToken); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nestedcryptoToken", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 9; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* _SeqOfH225CryptoH323Token */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225_SeqOfH225CryptoH323Token (OOCTXT* pctxt, H225_SeqOfH225CryptoH323Token* pvalue) +{ + int stat = ASN_OK; + H225CryptoH323Token* pdata; + ASN1UINT count = 0; + ASN1UINT xx1; + int lstat; + + dListInit (pvalue); + + for (;;) { + /* decode length determinant */ + + lstat = decodeLength (pctxt, &count); + if (lstat != ASN_OK && lstat != ASN_OK_FRAG) { + return lstat; + } + + /* decode elements */ + + for (xx1 = 0; xx1 < count; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225CryptoH323Token); + + stat = asn1PD_H225CryptoH323Token (pctxt, pdata); + if (stat != ASN_OK) return stat; + invokeEndElement (pctxt, "elem", xx1); + + dListAppendNode (pctxt, pvalue, pdata); + } + + if(lstat == ASN_OK) break; + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* Setup_UUIE_fastStart */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225Setup_UUIE_fastStart (OOCTXT* pctxt, H225Setup_UUIE_fastStart* pvalue) +{ + int stat = ASN_OK; + ASN1UINT xx1; + + /* decode length determinant */ + + stat = decodeLength (pctxt, &pvalue->n); + if (stat != ASN_OK) return stat; + + /* decode elements */ + + ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1DynOctStr); + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->elem[xx1]); + if (stat != ASN_OK) return stat; + invokeOctStrValue (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data); + invokeEndElement (pctxt, "elem", xx1); + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ScnConnectionType */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225ScnConnectionType (OOCTXT* pctxt, H225ScnConnectionType* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 6); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* unknown */ + case 0: + invokeStartElement (pctxt, "unknown", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "unknown", -1); + + break; + + /* bChannel */ + case 1: + invokeStartElement (pctxt, "bChannel", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "bChannel", -1); + + break; + + /* hybrid2x64 */ + case 2: + invokeStartElement (pctxt, "hybrid2x64", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "hybrid2x64", -1); + + break; + + /* hybrid384 */ + case 3: + invokeStartElement (pctxt, "hybrid384", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "hybrid384", -1); + + break; + + /* hybrid1536 */ + case 4: + invokeStartElement (pctxt, "hybrid1536", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "hybrid1536", -1); + + break; + + /* hybrid1920 */ + case 5: + invokeStartElement (pctxt, "hybrid1920", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "hybrid1920", -1); + + break; + + /* multirate */ + case 6: + invokeStartElement (pctxt, "multirate", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "multirate", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 8; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ScnConnectionAggregation */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225ScnConnectionAggregation (OOCTXT* pctxt, H225ScnConnectionAggregation* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 5); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* auto_ */ + case 0: + invokeStartElement (pctxt, "auto_", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "auto_", -1); + + break; + + /* none */ + case 1: + invokeStartElement (pctxt, "none", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "none", -1); + + break; + + /* h221 */ + case 2: + invokeStartElement (pctxt, "h221", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "h221", -1); + + break; + + /* bonded_mode1 */ + case 3: + invokeStartElement (pctxt, "bonded_mode1", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "bonded_mode1", -1); + + break; + + /* bonded_mode2 */ + case 4: + invokeStartElement (pctxt, "bonded_mode2", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "bonded_mode2", -1); + + break; + + /* bonded_mode3 */ + case 5: + invokeStartElement (pctxt, "bonded_mode3", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "bonded_mode3", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 7; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* Setup_UUIE_connectionParameters */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225Setup_UUIE_connectionParameters (OOCTXT* pctxt, H225Setup_UUIE_connectionParameters* pvalue) +{ + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* decode connectionType */ + + invokeStartElement (pctxt, "connectionType", -1); + + stat = asn1PD_H225ScnConnectionType (pctxt, &pvalue->connectionType); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "connectionType", -1); + + /* decode numberOfScnConnections */ + + invokeStartElement (pctxt, "numberOfScnConnections", -1); + + stat = decodeConsUInt16 (pctxt, &pvalue->numberOfScnConnections, 0U, 65535U); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, pvalue->numberOfScnConnections); + + invokeEndElement (pctxt, "numberOfScnConnections", -1); + + /* decode connectionAggregation */ + + invokeStartElement (pctxt, "connectionAggregation", -1); + + stat = asn1PD_H225ScnConnectionAggregation (pctxt, &pvalue->connectionAggregation); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "connectionAggregation", -1); + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* Setup_UUIE_language */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225Setup_UUIE_language (OOCTXT* pctxt, H225Setup_UUIE_language* pvalue) +{ + static Asn1SizeCnst element_lsize1 = { 0, 1, 32, 0 }; + int stat = ASN_OK; + ASN1UINT xx1; + + /* decode length determinant */ + + stat = decodeLength (pctxt, &pvalue->n); + if (stat != ASN_OK) return stat; + + /* decode elements */ + + ALLOC_ASN1ARRAY (pctxt, pvalue, ASN1IA5String); + + for (xx1 = 0; xx1 < pvalue->n; xx1++) { + invokeStartElement (pctxt, "elem", xx1); + + addSizeConstraint (pctxt, &element_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->elem[xx1], 0, 8, 7, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->elem[xx1]); + invokeEndElement (pctxt, "elem", xx1); + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* PresentationIndicator */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225PresentationIndicator (OOCTXT* pctxt, H225PresentationIndicator* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 2); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* presentationAllowed */ + case 0: + invokeStartElement (pctxt, "presentationAllowed", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "presentationAllowed", -1); + + break; + + /* presentationRestricted */ + case 1: + invokeStartElement (pctxt, "presentationRestricted", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "presentationRestricted", -1); + + break; + + /* addressNotAvailable */ + case 2: + invokeStartElement (pctxt, "addressNotAvailable", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "addressNotAvailable", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 4; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CallCreditServiceControl_billingMode */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CallCreditServiceControl_billingMode (OOCTXT* pctxt, H225CallCreditServiceControl_billingMode* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 1); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* credit */ + case 0: + invokeStartElement (pctxt, "credit", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "credit", -1); + + break; + + /* debit */ + case 1: + invokeStartElement (pctxt, "debit", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "debit", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 3; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CallCreditServiceControl_callStartingPoint */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CallCreditServiceControl_callStartingPoint (OOCTXT* pctxt, H225CallCreditServiceControl_callStartingPoint* pvalue) +{ + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 1); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* alerting */ + case 0: + invokeStartElement (pctxt, "alerting", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "alerting", -1); + + break; + + /* connect */ + case 1: + invokeStartElement (pctxt, "connect", -1); + + /* NULL */ + invokeNullValue (pctxt); + + invokeEndElement (pctxt, "connect", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 3; + + stat = decodeByteAlign (pctxt); + if (stat != ASN_OK) return stat; + + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* CallCreditServiceControl */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225CallCreditServiceControl (OOCTXT* pctxt, H225CallCreditServiceControl* pvalue) +{ + static Asn1SizeCnst amountString_lsize1 = { 0, 1, 512, 0 }; + int stat = ASN_OK; + OOCTXT lctxt; + ASN1OpenType openType; + ASN1UINT bitcnt; + ASN1UINT i; + ASN1BOOL optbit; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + /* optional bits */ + + memset (&pvalue->m, 0, sizeof(pvalue->m)); + + DECODEBIT (pctxt, &optbit); + pvalue->m.amountStringPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.billingModePresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.callDurationLimitPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.enforceCallDurationLimitPresent = optbit; + + DECODEBIT (pctxt, &optbit); + pvalue->m.callStartingPointPresent = optbit; + + /* decode amountString */ + + if (pvalue->m.amountStringPresent) { + invokeStartElement (pctxt, "amountString", -1); + + addSizeConstraint (pctxt, &amountString_lsize1); + + stat = decodeBMPString (pctxt, &pvalue->amountString, 0); + if (stat != ASN_OK) return stat; + invokeCharStr16BitValue (pctxt, pvalue->amountString.nchars, pvalue->amountString.data); + + invokeEndElement (pctxt, "amountString", -1); + } + + /* decode billingMode */ + + if (pvalue->m.billingModePresent) { + invokeStartElement (pctxt, "billingMode", -1); + + stat = asn1PD_H225CallCreditServiceControl_billingMode (pctxt, &pvalue->billingMode); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "billingMode", -1); + } + + /* decode callDurationLimit */ + + if (pvalue->m.callDurationLimitPresent) { + invokeStartElement (pctxt, "callDurationLimit", -1); + + stat = decodeConsUnsigned (pctxt, &pvalue->callDurationLimit, 1U, ASN1UINT_MAX); + if (stat != ASN_OK) return stat; + invokeUIntValue (pctxt, pvalue->callDurationLimit); + + invokeEndElement (pctxt, "callDurationLimit", -1); + } + + /* decode enforceCallDurationLimit */ + + if (pvalue->m.enforceCallDurationLimitPresent) { + invokeStartElement (pctxt, "enforceCallDurationLimit", -1); + + stat = DECODEBIT (pctxt, &pvalue->enforceCallDurationLimit); + if (stat != ASN_OK) return stat; + invokeBoolValue (pctxt, pvalue->enforceCallDurationLimit); + + invokeEndElement (pctxt, "enforceCallDurationLimit", -1); + } + + /* decode callStartingPoint */ + + if (pvalue->m.callStartingPointPresent) { + invokeStartElement (pctxt, "callStartingPoint", -1); + + stat = asn1PD_H225CallCreditServiceControl_callStartingPoint (pctxt, &pvalue->callStartingPoint); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "callStartingPoint", -1); + } + + if (extbit) { + + /* decode extension optional bits length */ + + stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); + if (stat != ASN_OK) return stat; + + bitcnt += 1; + + ZEROCONTEXT (&lctxt); + stat = setPERBufferUsingCtxt (&lctxt, pctxt); + if (stat != ASN_OK) return stat; + + stat = moveBitCursor (pctxt, bitcnt); + if (stat != ASN_OK) return stat; + + for (i = 0; i < bitcnt; i++) { + DECODEBIT (&lctxt, &optbit); + + if (optbit) { + stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); + if (stat != ASN_OK) return stat; + + pctxt->buffer.byteIndex += openType.numocts; + } + } + } + + return (stat); +} + +/**************************************************************/ +/* */ +/* ServiceControlDescriptor */ +/* */ +/**************************************************************/ + +EXTERN int asn1PD_H225ServiceControlDescriptor (OOCTXT* pctxt, H225ServiceControlDescriptor* pvalue) +{ + static Asn1SizeCnst url_lsize1 = { 0, 0, 512, 0 }; + int stat = ASN_OK; + ASN1UINT ui; + ASN1OpenType openType; + ASN1BOOL extbit; + + /* extension bit */ + + DECODEBIT (pctxt, &extbit); + + if (!extbit) { + stat = decodeConsUnsigned (pctxt, &ui, 0, 3); + if (stat != ASN_OK) return stat; + else pvalue->t = ui + 1; + + switch (ui) { + /* url */ + case 0: + invokeStartElement (pctxt, "url", -1); + + addSizeConstraint (pctxt, &url_lsize1); + + stat = decodeConstrainedStringEx (pctxt, &pvalue->u.url, 0, 8, 7, 7); + if (stat != ASN_OK) return stat; + invokeCharStrValue (pctxt, pvalue->u.url); + + invokeEndElement (pctxt, "url", -1); + + break; + + /* signal */ + case 1: + invokeStartElement (pctxt, "signal", -1); + + pvalue->u.signal = ALLOC_ASN1ELEM (pctxt, H225H248SignalsDescriptor); + + stat = asn1PD_H225H248SignalsDescriptor (pctxt, pvalue->u.signal); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "signal", -1); + + break; + + /* nonStandard */ + case 2: + invokeStartElement (pctxt, "nonStandard", -1); + + pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter); + + stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandard); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "nonStandard", -1); + + break; + + /* callCreditServiceControl */ + case 3: + invokeStartElement (pctxt, "callCreditServiceControl", -1); + + pvalue->u.callCreditServiceControl = ALLOC_ASN1ELEM (pctxt, H225CallCreditServiceControl); + + stat = asn1PD_H225CallCreditServiceControl (pctxt, pvalue->u.callCreditServiceControl); + if (stat != ASN_OK) return stat; + + invokeEndElement (pctxt, "callCreditServiceControl", -1); + + break; + + default: + return ASN_E_INVOPT; + } + } + else { + stat = decodeSmallNonNegWholeNumber (pctxt, &ui); + if (stat != ASN_OK) return st |