dect
/
asterisk
Archived
13
0
Fork 0
This repository has been archived on 2022-02-17. You can view files and clone it, but cannot push or open issues or pull requests.
asterisk/addons/ooh323c/src/h323/H323-MESSAGESEnc.c

22597 lines
699 KiB
C

/*
* 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"
/**************************************************************/
/* */
/* ScreeningIndicator */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ScreeningIndicator (OOCTXT* pctxt, H225ScreeningIndicator value)
{
int stat = ASN_OK;
ASN1UINT ui;
ASN1BOOL extbit;
extbit = 0;
switch (value) {
case userProvidedNotScreened: ui = 0; break;
case userProvidedVerifiedAndPassed: ui = 1; break;
case userProvidedVerifiedAndFailed: ui = 2; break;
case networkProvided: ui = 3; break;
default: ui = value; extbit = 1;
}
/* extension bit */
encodeBit (pctxt, extbit);
if (extbit) {
stat = encodeSmallNonNegWholeNumber (pctxt, ui);
}
else {
stat = encodeConsUnsigned (pctxt, ui, 0, 3);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* NumberDigits */
/* */
/**************************************************************/
extern EXTERN const char* gs_H323_MESSAGES_NumberDigits_CharSet;
EXTERN int asn1PE_H225NumberDigits (OOCTXT* pctxt, H225NumberDigits value)
{
static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeConstrainedStringEx (pctxt, value, gs_H323_MESSAGES_NumberDigits_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* TBCD_STRING */
/* */
/**************************************************************/
extern EXTERN const char* gs_H323_MESSAGES_TBCD_STRING_CharSet;
EXTERN int asn1PE_H225TBCD_STRING (OOCTXT* pctxt, H225TBCD_STRING value)
{
int stat = ASN_OK;
stat = encodeConstrainedStringEx (pctxt, value, gs_H323_MESSAGES_TBCD_STRING_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* GloballyUniqueID */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GloballyUniqueID (OOCTXT* pctxt, H225GloballyUniqueID* 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);
}
/**************************************************************/
/* */
/* ConferenceIdentifier */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ConferenceIdentifier (OOCTXT* pctxt, H225ConferenceIdentifier* pvalue)
{
int stat = ASN_OK;
stat = asn1PE_H225GloballyUniqueID (pctxt, pvalue);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* RequestSeqNum */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RequestSeqNum (OOCTXT* pctxt, H225RequestSeqNum value)
{
int stat = ASN_OK;
stat = encodeConsUnsigned (pctxt, value, 1U, 65535U);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* GatekeeperIdentifier */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GatekeeperIdentifier (OOCTXT* pctxt, H225GatekeeperIdentifier 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);
}
/**************************************************************/
/* */
/* BandWidth */
/* */
/**************************************************************/
EXTERN int asn1PE_H225BandWidth (OOCTXT* pctxt, H225BandWidth value)
{
int stat = ASN_OK;
stat = encodeConsUnsigned (pctxt, value, 0U, ASN1UINT_MAX);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* CallReferenceValue */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallReferenceValue (OOCTXT* pctxt, H225CallReferenceValue value)
{
int stat = ASN_OK;
stat = encodeConsUnsigned (pctxt, value, 0U, 65535U);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* EndpointIdentifier */
/* */
/**************************************************************/
EXTERN int asn1PE_H225EndpointIdentifier (OOCTXT* pctxt, H225EndpointIdentifier 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);
}
/**************************************************************/
/* */
/* ProtocolIdentifier */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ProtocolIdentifier (OOCTXT* pctxt, H225ProtocolIdentifier value)
{
int stat = ASN_OK;
stat = encodeObjectIdentifier (pctxt, &value);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* TimeToLive */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TimeToLive (OOCTXT* pctxt, H225TimeToLive value)
{
int stat = ASN_OK;
stat = encodeConsUnsigned (pctxt, value, 1U, ASN1UINT_MAX);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* H248PackagesDescriptor */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H248PackagesDescriptor (OOCTXT* pctxt, H225H248PackagesDescriptor value)
{
int stat = ASN_OK;
stat = encodeOctetString (pctxt, value.numocts, value.data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* H248SignalsDescriptor */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H248SignalsDescriptor (OOCTXT* pctxt, H225H248SignalsDescriptor value)
{
int stat = ASN_OK;
stat = encodeOctetString (pctxt, value.numocts, value.data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* GenericIdentifier */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GenericIdentifier (OOCTXT* pctxt, H225GenericIdentifier* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 3);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* standard */
case 1:
if ( (pvalue->u.standard >= 0 && pvalue->u.standard <= 16383) ) {
extbit = 0;
}
else extbit = 1;
/* extension bit */
encodeBit (pctxt, extbit);
if (extbit) {
stat = encodeUnconsInteger (pctxt, pvalue->u.standard);
if (stat != ASN_OK) return stat;
}
else {
stat = encodeConsInteger (pctxt, pvalue->u.standard, 0, 16383);
if (stat != ASN_OK) return stat;
}
break;
/* oid */
case 2:
stat = encodeObjectIdentifier (pctxt, pvalue->u.oid);
if (stat != ASN_OK) return stat;
break;
/* nonStandard */
case 3:
stat = asn1PE_H225GloballyUniqueID (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 - 4);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* TransportAddress_ipAddress_ip */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_ipAddress_ip (OOCTXT* pctxt, H225TransportAddress_ipAddress_ip* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* TransportAddress_ipAddress */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_ipAddress (OOCTXT* pctxt, H225TransportAddress_ipAddress* pvalue)
{
int stat = ASN_OK;
/* encode ip */
stat = asn1PE_H225TransportAddress_ipAddress_ip (pctxt, &pvalue->ip);
if (stat != ASN_OK) return stat;
/* encode port */
stat = encodeConsUnsigned (pctxt, pvalue->port, 0U, 65535U);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* TransportAddress_ipSourceRoute_ip */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_ip (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_ip* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* TransportAddress_ipSourceRoute_route_element */
/* */
/**************************************************************/
EXTERN int asn1PE_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 = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225TransportAddress_ipSourceRoute_route_element */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225_SeqOfH225TransportAddress_ipSourceRoute_route_element* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = asn1PE_H225TransportAddress_ipSourceRoute_route_element (pctxt, &pvalue->elem[xx1]);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* TransportAddress_ipSourceRoute_routing */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_routing (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_routing* 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)
{
/* strict */
case 1:
/* NULL */
break;
/* loose */
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);
}
/**************************************************************/
/* */
/* TransportAddress_ipSourceRoute */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_ipSourceRoute (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode ip */
stat = asn1PE_H225TransportAddress_ipSourceRoute_ip (pctxt, &pvalue->ip);
if (stat != ASN_OK) return stat;
/* encode port */
stat = encodeConsUnsigned (pctxt, pvalue->port, 0U, 65535U);
if (stat != ASN_OK) return stat;
/* encode route */
stat = asn1PE_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (pctxt, &pvalue->route);
if (stat != ASN_OK) return stat;
/* encode routing */
stat = asn1PE_H225TransportAddress_ipSourceRoute_routing (pctxt, &pvalue->routing);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* TransportAddress_ipxAddress_node */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_ipxAddress_node (OOCTXT* pctxt, H225TransportAddress_ipxAddress_node* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 6, 6, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* TransportAddress_ipxAddress_netnum */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_ipxAddress_netnum (OOCTXT* pctxt, H225TransportAddress_ipxAddress_netnum* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* TransportAddress_ipxAddress_port */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_ipxAddress_port (OOCTXT* pctxt, H225TransportAddress_ipxAddress_port* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 2, 2, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* TransportAddress_ipxAddress */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_ipxAddress (OOCTXT* pctxt, H225TransportAddress_ipxAddress* pvalue)
{
int stat = ASN_OK;
/* encode node */
stat = asn1PE_H225TransportAddress_ipxAddress_node (pctxt, &pvalue->node);
if (stat != ASN_OK) return stat;
/* encode netnum */
stat = asn1PE_H225TransportAddress_ipxAddress_netnum (pctxt, &pvalue->netnum);
if (stat != ASN_OK) return stat;
/* encode port */
stat = asn1PE_H225TransportAddress_ipxAddress_port (pctxt, &pvalue->port);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* TransportAddress_ip6Address_ip */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_ip6Address_ip (OOCTXT* pctxt, H225TransportAddress_ip6Address_ip* 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);
}
/**************************************************************/
/* */
/* TransportAddress_ip6Address */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_ip6Address (OOCTXT* pctxt, H225TransportAddress_ip6Address* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode ip */
stat = asn1PE_H225TransportAddress_ip6Address_ip (pctxt, &pvalue->ip);
if (stat != ASN_OK) return stat;
/* encode port */
stat = encodeConsUnsigned (pctxt, pvalue->port, 0U, 65535U);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* TransportAddress_netBios */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_netBios (OOCTXT* pctxt, H225TransportAddress_netBios* 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);
}
/**************************************************************/
/* */
/* TransportAddress_nsap */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress_nsap (OOCTXT* pctxt, H225TransportAddress_nsap* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* H221NonStandard */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H221NonStandard (OOCTXT* pctxt, H225H221NonStandard* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode t35CountryCode */
stat = encodeConsUnsigned (pctxt, pvalue->t35CountryCode, 0U, 255U);
if (stat != ASN_OK) return stat;
/* encode t35Extension */
stat = encodeConsUnsigned (pctxt, pvalue->t35Extension, 0U, 255U);
if (stat != ASN_OK) return stat;
/* encode manufacturerCode */
stat = encodeConsUnsigned (pctxt, pvalue->manufacturerCode, 0U, 65535U);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* NonStandardIdentifier */
/* */
/**************************************************************/
EXTERN int asn1PE_H225NonStandardIdentifier (OOCTXT* pctxt, H225NonStandardIdentifier* 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)
{
/* object */
case 1:
stat = encodeObjectIdentifier (pctxt, pvalue->u.object);
if (stat != ASN_OK) return stat;
break;
/* h221NonStandard */
case 2:
stat = asn1PE_H225H221NonStandard (pctxt, pvalue->u.h221NonStandard);
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);
}
/**************************************************************/
/* */
/* NonStandardParameter */
/* */
/**************************************************************/
EXTERN int asn1PE_H225NonStandardParameter (OOCTXT* pctxt, H225NonStandardParameter* pvalue)
{
int stat = ASN_OK;
/* encode nonStandardIdentifier */
stat = asn1PE_H225NonStandardIdentifier (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);
}
/**************************************************************/
/* */
/* TransportAddress */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportAddress (OOCTXT* pctxt, H225TransportAddress* pvalue)
{
int stat = ASN_OK;
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)
{
/* ipAddress */
case 1:
stat = asn1PE_H225TransportAddress_ipAddress (pctxt, pvalue->u.ipAddress);
if (stat != ASN_OK) return stat;
break;
/* ipSourceRoute */
case 2:
stat = asn1PE_H225TransportAddress_ipSourceRoute (pctxt, pvalue->u.ipSourceRoute);
if (stat != ASN_OK) return stat;
break;
/* ipxAddress */
case 3:
stat = asn1PE_H225TransportAddress_ipxAddress (pctxt, pvalue->u.ipxAddress);
if (stat != ASN_OK) return stat;
break;
/* ip6Address */
case 4:
stat = asn1PE_H225TransportAddress_ip6Address (pctxt, pvalue->u.ip6Address);
if (stat != ASN_OK) return stat;
break;
/* netBios */
case 5:
stat = asn1PE_H225TransportAddress_netBios (pctxt, pvalue->u.netBios);
if (stat != ASN_OK) return stat;
break;
/* nsap */
case 6:
stat = asn1PE_H225TransportAddress_nsap (pctxt, pvalue->u.nsap);
if (stat != ASN_OK) return stat;
break;
/* nonStandardAddress */
case 7:
stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandardAddress);
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 */
}
return (stat);
}
/**************************************************************/
/* */
/* PublicTypeOfNumber */
/* */
/**************************************************************/
EXTERN int asn1PE_H225PublicTypeOfNumber (OOCTXT* pctxt, H225PublicTypeOfNumber* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 6);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* unknown */
case 1:
/* NULL */
break;
/* internationalNumber */
case 2:
/* NULL */
break;
/* nationalNumber */
case 3:
/* NULL */
break;
/* networkSpecificNumber */
case 4:
/* NULL */
break;
/* subscriberNumber */
case 5:
/* NULL */
break;
/* abbreviatedNumber */
case 6:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* PublicPartyNumber */
/* */
/**************************************************************/
EXTERN int asn1PE_H225PublicPartyNumber (OOCTXT* pctxt, H225PublicPartyNumber* pvalue)
{
int stat = ASN_OK;
/* encode publicTypeOfNumber */
stat = asn1PE_H225PublicTypeOfNumber (pctxt, &pvalue->publicTypeOfNumber);
if (stat != ASN_OK) return stat;
/* encode publicNumberDigits */
stat = asn1PE_H225NumberDigits (pctxt, pvalue->publicNumberDigits);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* PrivateTypeOfNumber */
/* */
/**************************************************************/
EXTERN int asn1PE_H225PrivateTypeOfNumber (OOCTXT* pctxt, H225PrivateTypeOfNumber* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 6);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* unknown */
case 1:
/* NULL */
break;
/* level2RegionalNumber */
case 2:
/* NULL */
break;
/* level1RegionalNumber */
case 3:
/* NULL */
break;
/* pISNSpecificNumber */
case 4:
/* NULL */
break;
/* localNumber */
case 5:
/* NULL */
break;
/* abbreviatedNumber */
case 6:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* PrivatePartyNumber */
/* */
/**************************************************************/
EXTERN int asn1PE_H225PrivatePartyNumber (OOCTXT* pctxt, H225PrivatePartyNumber* pvalue)
{
int stat = ASN_OK;
/* encode privateTypeOfNumber */
stat = asn1PE_H225PrivateTypeOfNumber (pctxt, &pvalue->privateTypeOfNumber);
if (stat != ASN_OK) return stat;
/* encode privateNumberDigits */
stat = asn1PE_H225NumberDigits (pctxt, pvalue->privateNumberDigits);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* PartyNumber */
/* */
/**************************************************************/
EXTERN int asn1PE_H225PartyNumber (OOCTXT* pctxt, H225PartyNumber* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 5);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* e164Number */
case 1:
stat = asn1PE_H225PublicPartyNumber (pctxt, pvalue->u.e164Number);
if (stat != ASN_OK) return stat;
break;
/* dataPartyNumber */
case 2:
stat = asn1PE_H225NumberDigits (pctxt, pvalue->u.dataPartyNumber);
if (stat != ASN_OK) return stat;
break;
/* telexPartyNumber */
case 3:
stat = asn1PE_H225NumberDigits (pctxt, pvalue->u.telexPartyNumber);
if (stat != ASN_OK) return stat;
break;
/* privateNumber */
case 4:
stat = asn1PE_H225PrivatePartyNumber (pctxt, pvalue->u.privateNumber);
if (stat != ASN_OK) return stat;
break;
/* nationalStandardPartyNumber */
case 5:
stat = asn1PE_H225NumberDigits (pctxt, pvalue->u.nationalStandardPartyNumber);
if (stat != ASN_OK) return stat;
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
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 asn1PE_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;
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)
{
/* sid */
case 1:
addSizeConstraint (pctxt, &sid_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->u.sid, gs_H323_MESSAGES_ANSI_41_UIM_system_id_sid_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
break;
/* mid */
case 2:
addSizeConstraint (pctxt, &mid_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->u.mid, gs_H323_MESSAGES_ANSI_41_UIM_system_id_mid_CharSet, 4, 4, 7);
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);
}
/**************************************************************/
/* */
/* ANSI_41_UIM_systemMyTypeCode */
/* */
/**************************************************************/
EXTERN int asn1PE_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 = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* ANSI_41_UIM_systemAccessType */
/* */
/**************************************************************/
EXTERN int asn1PE_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 = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* ANSI_41_UIM_qualificationInformationCode */
/* */
/**************************************************************/
EXTERN int asn1PE_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 = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
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 asn1PE_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;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.imsiPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.minPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.mdnPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.msisdnPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.esnPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.mscidPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.systemMyTypeCodePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.systemAccessTypePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.qualificationInformationCodePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.sesnPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.socPresent);
/* encode imsi */
if (pvalue->m.imsiPresent) {
addSizeConstraint (pctxt, &imsi_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->imsi, gs_H323_MESSAGES_ANSI_41_UIM_imsi_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
/* encode min */
if (pvalue->m.minPresent) {
addSizeConstraint (pctxt, &min_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->min, gs_H323_MESSAGES_ANSI_41_UIM_min_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
/* encode mdn */
if (pvalue->m.mdnPresent) {
addSizeConstraint (pctxt, &mdn_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->mdn, gs_H323_MESSAGES_ANSI_41_UIM_mdn_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
/* encode msisdn */
if (pvalue->m.msisdnPresent) {
addSizeConstraint (pctxt, &msisdn_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->msisdn, gs_H323_MESSAGES_ANSI_41_UIM_msisdn_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
/* encode esn */
if (pvalue->m.esnPresent) {
addSizeConstraint (pctxt, &esn_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->esn, gs_H323_MESSAGES_ANSI_41_UIM_esn_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
/* encode mscid */
if (pvalue->m.mscidPresent) {
addSizeConstraint (pctxt, &mscid_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->mscid, gs_H323_MESSAGES_ANSI_41_UIM_mscid_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
/* encode system_id */
stat = asn1PE_H225ANSI_41_UIM_system_id (pctxt, &pvalue->system_id);
if (stat != ASN_OK) return stat;
/* encode systemMyTypeCode */
if (pvalue->m.systemMyTypeCodePresent) {
stat = asn1PE_H225ANSI_41_UIM_systemMyTypeCode (pctxt, &pvalue->systemMyTypeCode);
if (stat != ASN_OK) return stat;
}
/* encode systemAccessType */
if (pvalue->m.systemAccessTypePresent) {
stat = asn1PE_H225ANSI_41_UIM_systemAccessType (pctxt, &pvalue->systemAccessType);
if (stat != ASN_OK) return stat;
}
/* encode qualificationInformationCode */
if (pvalue->m.qualificationInformationCodePresent) {
stat = asn1PE_H225ANSI_41_UIM_qualificationInformationCode (pctxt, &pvalue->qualificationInformationCode);
if (stat != ASN_OK) return stat;
}
/* encode sesn */
if (pvalue->m.sesnPresent) {
addSizeConstraint (pctxt, &sesn_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->sesn, gs_H323_MESSAGES_ANSI_41_UIM_sesn_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
/* encode soc */
if (pvalue->m.socPresent) {
addSizeConstraint (pctxt, &soc_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->soc, gs_H323_MESSAGES_ANSI_41_UIM_soc_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* GSM_UIM_tmsi */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GSM_UIM_tmsi (OOCTXT* pctxt, H225GSM_UIM_tmsi* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 1, 4, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
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 asn1PE_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;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.imsiPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tmsiPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.msisdnPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.imeiPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.hplmnPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.vplmnPresent);
/* encode imsi */
if (pvalue->m.imsiPresent) {
addSizeConstraint (pctxt, &imsi_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->imsi, gs_H323_MESSAGES_GSM_UIM_imsi_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
/* encode tmsi */
if (pvalue->m.tmsiPresent) {
stat = asn1PE_H225GSM_UIM_tmsi (pctxt, &pvalue->tmsi);
if (stat != ASN_OK) return stat;
}
/* encode msisdn */
if (pvalue->m.msisdnPresent) {
addSizeConstraint (pctxt, &msisdn_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->msisdn, gs_H323_MESSAGES_GSM_UIM_msisdn_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
/* encode imei */
if (pvalue->m.imeiPresent) {
addSizeConstraint (pctxt, &imei_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->imei, gs_H323_MESSAGES_GSM_UIM_imei_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
/* encode hplmn */
if (pvalue->m.hplmnPresent) {
addSizeConstraint (pctxt, &hplmn_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->hplmn, gs_H323_MESSAGES_GSM_UIM_hplmn_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
/* encode vplmn */
if (pvalue->m.vplmnPresent) {
addSizeConstraint (pctxt, &vplmn_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->vplmn, gs_H323_MESSAGES_GSM_UIM_vplmn_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* MobileUIM */
/* */
/**************************************************************/
EXTERN int asn1PE_H225MobileUIM (OOCTXT* pctxt, H225MobileUIM* 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)
{
/* ansi_41_uim */
case 1:
stat = asn1PE_H225ANSI_41_UIM (pctxt, pvalue->u.ansi_41_uim);
if (stat != ASN_OK) return stat;
break;
/* gsm_uim */
case 2:
stat = asn1PE_H225GSM_UIM (pctxt, pvalue->u.gsm_uim);
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);
}
/**************************************************************/
/* */
/* AliasAddress */
/* */
/**************************************************************/
extern EXTERN const char* gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet;
EXTERN int asn1PE_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;
OOCTXT lctxt;
ASN1OpenType openType;
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)
{
/* dialedDigits */
case 1:
addSizeConstraint (pctxt, &dialedDigits_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->u.dialedDigits, gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet, 4, 4, 7);
if (stat != ASN_OK) return stat;
break;
/* h323_ID */
case 2:
addSizeConstraint (pctxt, &h323_ID_lsize1);
stat = encodeBMPString (pctxt, pvalue->u.h323_ID, 0);
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 */
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
switch (pvalue->t)
{
/* url_ID */
case 3:
addSizeConstraint (&lctxt, &url_ID_lsize1);
stat = encodeConstrainedStringEx (&lctxt, pvalue->u.url_ID, 0, 8, 7, 7);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* transportID */
case 4:
stat = asn1PE_H225TransportAddress (&lctxt, pvalue->u.transportID);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* email_ID */
case 5:
addSizeConstraint (&lctxt, &email_ID_lsize1);
stat = encodeConstrainedStringEx (&lctxt, pvalue->u.email_ID, 0, 8, 7, 7);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* partyNumber */
case 6:
stat = asn1PE_H225PartyNumber (&lctxt, pvalue->u.partyNumber);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* mobileUIM */
case 7:
stat = asn1PE_H225MobileUIM (&lctxt, pvalue->u.mobileUIM);
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);
}
/**************************************************************/
/* */
/* Content_compound */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Content_compound (OOCTXT* pctxt, H225Content_compound* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 1, 512, 0 };
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
/* encode length determinant */
addSizeConstraint (pctxt, &lsize1);
stat = encodeLength (pctxt, pvalue->count);
if (stat < 0) return stat;
/* encode elements */
pnode = pvalue->head;
for (xx1 = 0; xx1 < pvalue->count; xx1++) {
stat = asn1PE_H225EnumeratedParameter (pctxt, (H225EnumeratedParameter*)((H225EnumeratedParameter*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
return (stat);
}
/**************************************************************/
/* */
/* Content_nested */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Content_nested (OOCTXT* pctxt, H225Content_nested* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
/* encode length determinant */
addSizeConstraint (pctxt, &lsize1);
stat = encodeLength (pctxt, pvalue->count);
if (stat < 0) return stat;
/* encode elements */
pnode = pvalue->head;
for (xx1 = 0; xx1 < pvalue->count; xx1++) {
stat = asn1PE_H225GenericData (pctxt, (H225GenericData*)((H225GenericData*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
return (stat);
}
/**************************************************************/
/* */
/* Content */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Content (OOCTXT* pctxt, H225Content* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 12);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 11);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* raw */
case 1:
stat = encodeOctetString (pctxt, pvalue->u.raw->numocts, pvalue->u.raw->data);
if (stat != ASN_OK) return stat;
break;
/* text */
case 2:
stat = encodeConstrainedStringEx (pctxt, pvalue->u.text, 0, 8, 7, 7);
if (stat != ASN_OK) return stat;
break;
/* unicode */
case 3:
stat = encodeBMPString (pctxt, pvalue->u.unicode, 0);
if (stat != ASN_OK) return stat;
break;
/* bool_ */
case 4:
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->u.bool_);
if (stat != ASN_OK) return stat;
break;
/* number8 */
case 5:
stat = encodeConsUnsigned (pctxt, pvalue->u.number8, 0U, 255U);
if (stat != ASN_OK) return stat;
break;
/* number16 */
case 6:
stat = encodeConsUnsigned (pctxt, pvalue->u.number16, 0U, 65535U);
if (stat != ASN_OK) return stat;
break;
/* number32 */
case 7:
stat = encodeConsUnsigned (pctxt, pvalue->u.number32, 0U, ASN1UINT_MAX);
if (stat != ASN_OK) return stat;
break;
/* id */
case 8:
stat = asn1PE_H225GenericIdentifier (pctxt, pvalue->u.id);
if (stat != ASN_OK) return stat;
break;
/* alias */
case 9:
stat = asn1PE_H225AliasAddress (pctxt, pvalue->u.alias);
if (stat != ASN_OK) return stat;
break;
/* transport */
case 10:
stat = asn1PE_H225TransportAddress (pctxt, pvalue->u.transport);
if (stat != ASN_OK) return stat;
break;
/* compound */
case 11:
stat = asn1PE_H225Content_compound (pctxt, pvalue->u.compound);
if (stat != ASN_OK) return stat;
break;
/* nested */
case 12:
stat = asn1PE_H225Content_nested (pctxt, pvalue->u.nested);
if (stat != ASN_OK) return stat;
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 13);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* EnumeratedParameter */
/* */
/**************************************************************/
EXTERN int asn1PE_H225EnumeratedParameter (OOCTXT* pctxt, H225EnumeratedParameter* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.contentPresent);
/* encode id */
stat = asn1PE_H225GenericIdentifier (pctxt, &pvalue->id);
if (stat != ASN_OK) return stat;
/* encode content */
if (pvalue->m.contentPresent) {
stat = asn1PE_H225Content (pctxt, &pvalue->content);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* GenericData_parameters */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GenericData_parameters (OOCTXT* pctxt, H225GenericData_parameters* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 1, 512, 0 };
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
/* encode length determinant */
addSizeConstraint (pctxt, &lsize1);
stat = encodeLength (pctxt, pvalue->count);
if (stat < 0) return stat;
/* encode elements */
pnode = pvalue->head;
for (xx1 = 0; xx1 < pvalue->count; xx1++) {
stat = asn1PE_H225EnumeratedParameter (pctxt, ((H225EnumeratedParameter*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
return (stat);
}
/**************************************************************/
/* */
/* GenericData */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GenericData (OOCTXT* pctxt, H225GenericData* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.parametersPresent);
/* encode id */
stat = asn1PE_H225GenericIdentifier (pctxt, &pvalue->id);
if (stat != ASN_OK) return stat;
/* encode parameters */
if (pvalue->m.parametersPresent) {
stat = asn1PE_H225GenericData_parameters (pctxt, &pvalue->parameters);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* FeatureDescriptor */
/* */
/**************************************************************/
EXTERN int asn1PE_H225FeatureDescriptor (OOCTXT* pctxt, H225FeatureDescriptor* pvalue)
{
int stat = ASN_OK;
stat = asn1PE_H225GenericData (pctxt, pvalue);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* FastStartToken */
/* */
/**************************************************************/
EXTERN int asn1PE_H225FastStartToken (OOCTXT* pctxt, H225FastStartToken* pvalue)
{
int stat = ASN_OK;
stat = asn1PE_H235ClearToken (pctxt, pvalue);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* EncodedFastStartToken */
/* */
/**************************************************************/
EXTERN int asn1PE_H225EncodedFastStartToken (OOCTXT* pctxt, H225EncodedFastStartToken value)
{
int stat = ASN_OK;
stat = encodeOpenType (pctxt, value.numocts, value.data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* H323_UserInformation_user_data_user_information */
/* */
/**************************************************************/
EXTERN int asn1PE_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 = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* EndpointType_set */
/* */
/**************************************************************/
EXTERN int asn1PE_H225EndpointType_set (OOCTXT* pctxt, H225EndpointType_set* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 32, 32, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* VendorIdentifier_productId */
/* */
/**************************************************************/
EXTERN int asn1PE_H225VendorIdentifier_productId (OOCTXT* pctxt, H225VendorIdentifier_productId* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* VendorIdentifier_versionId */
/* */
/**************************************************************/
EXTERN int asn1PE_H225VendorIdentifier_versionId (OOCTXT* pctxt, H225VendorIdentifier_versionId* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 1, 256, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* CicInfo_cic_element */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CicInfo_cic_element (OOCTXT* pctxt, H225CicInfo_cic_element* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 2, 4, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* CicInfo_pointCode */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CicInfo_pointCode (OOCTXT* pctxt, H225CicInfo_pointCode* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 2, 5, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* CarrierInfo_carrierIdentificationCode */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CarrierInfo_carrierIdentificationCode (OOCTXT* pctxt, H225CarrierInfo_carrierIdentificationCode* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 3, 4, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* CallTerminationCause_releaseCompleteCauseIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallTerminationCause_releaseCompleteCauseIE (OOCTXT* pctxt, H225CallTerminationCause_releaseCompleteCauseIE* pvalue)
{
static Asn1SizeCnst lsize1 = { 0, 2, 32, 0 };
int stat = ASN_OK;
addSizeConstraint (pctxt, &lsize1);
stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225AliasAddress */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225AliasAddress (OOCTXT* pctxt, H225_SeqOfH225AliasAddress* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225AliasAddress (pctxt, ((H225AliasAddress*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* VendorIdentifier */
/* */
/**************************************************************/
EXTERN int asn1PE_H225VendorIdentifier (OOCTXT* pctxt, H225VendorIdentifier* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.enterpriseNumberPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.productIdPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.versionIdPresent);
/* encode vendor */
stat = asn1PE_H225H221NonStandard (pctxt, &pvalue->vendor);
if (stat != ASN_OK) return stat;
/* encode productId */
if (pvalue->m.productIdPresent) {
stat = asn1PE_H225VendorIdentifier_productId (pctxt, &pvalue->productId);
if (stat != ASN_OK) return stat;
}
/* encode versionId */
if (pvalue->m.versionIdPresent) {
stat = asn1PE_H225VendorIdentifier_versionId (pctxt, &pvalue->versionId);
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.enterpriseNumberPresent);
/* encode extension elements */
if (pvalue->m.enterpriseNumberPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeObjectIdentifier (&lctxt, &pvalue->enterpriseNumber);
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);
}
/**************************************************************/
/* */
/* GatekeeperInfo */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GatekeeperInfo (OOCTXT* pctxt, H225GatekeeperInfo* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* DataRate */
/* */
/**************************************************************/
EXTERN int asn1PE_H225DataRate (OOCTXT* pctxt, H225DataRate* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.channelMultiplierPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode channelRate */
stat = asn1PE_H225BandWidth (pctxt, pvalue->channelRate);
if (stat != ASN_OK) return stat;
/* encode channelMultiplier */
if (pvalue->m.channelMultiplierPresent) {
stat = encodeConsUnsigned (pctxt, pvalue->channelMultiplier, 1U, 256U);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225DataRate */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225DataRate (OOCTXT* pctxt, H225_SeqOfH225DataRate* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225DataRate (pctxt, ((H225DataRate*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* SupportedPrefix */
/* */
/**************************************************************/
EXTERN int asn1PE_H225SupportedPrefix (OOCTXT* pctxt, H225SupportedPrefix* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode prefix */
stat = asn1PE_H225AliasAddress (pctxt, &pvalue->prefix);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225SupportedPrefix */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225SupportedPrefix (OOCTXT* pctxt, H225_SeqOfH225SupportedPrefix* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225SupportedPrefix (pctxt, ((H225SupportedPrefix*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* H310Caps */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H310Caps (OOCTXT* pctxt, H225H310Caps* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
pvalue->m.supportedPrefixesPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
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.dataRatesSupportedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
/* encode extension elements */
if (pvalue->m.dataRatesSupportedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
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.supportedPrefixesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
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);
}
/**************************************************************/
/* */
/* H320Caps */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H320Caps (OOCTXT* pctxt, H225H320Caps* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
pvalue->m.supportedPrefixesPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
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.dataRatesSupportedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
/* encode extension elements */
if (pvalue->m.dataRatesSupportedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
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.supportedPrefixesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
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);
}
/**************************************************************/
/* */
/* H321Caps */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H321Caps (OOCTXT* pctxt, H225H321Caps* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
pvalue->m.supportedPrefixesPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
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.dataRatesSupportedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
/* encode extension elements */
if (pvalue->m.dataRatesSupportedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
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.supportedPrefixesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
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);
}
/**************************************************************/
/* */
/* H322Caps */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H322Caps (OOCTXT* pctxt, H225H322Caps* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
pvalue->m.supportedPrefixesPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
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.dataRatesSupportedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
/* encode extension elements */
if (pvalue->m.dataRatesSupportedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
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.supportedPrefixesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
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);
}
/**************************************************************/
/* */
/* H323Caps */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H323Caps (OOCTXT* pctxt, H225H323Caps* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
pvalue->m.supportedPrefixesPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
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.dataRatesSupportedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
/* encode extension elements */
if (pvalue->m.dataRatesSupportedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
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.supportedPrefixesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
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);
}
/**************************************************************/
/* */
/* H324Caps */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H324Caps (OOCTXT* pctxt, H225H324Caps* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
pvalue->m.supportedPrefixesPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
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.dataRatesSupportedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
/* encode extension elements */
if (pvalue->m.dataRatesSupportedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
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.supportedPrefixesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
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);
}
/**************************************************************/
/* */
/* VoiceCaps */
/* */
/**************************************************************/
EXTERN int asn1PE_H225VoiceCaps (OOCTXT* pctxt, H225VoiceCaps* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
pvalue->m.supportedPrefixesPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
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.dataRatesSupportedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
/* encode extension elements */
if (pvalue->m.dataRatesSupportedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
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.supportedPrefixesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
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);
}
/**************************************************************/
/* */
/* T120OnlyCaps */
/* */
/**************************************************************/
EXTERN int asn1PE_H225T120OnlyCaps (OOCTXT* pctxt, H225T120OnlyCaps* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.dataRatesSupportedPresent ||
pvalue->m.supportedPrefixesPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
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.dataRatesSupportedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
/* encode extension elements */
if (pvalue->m.dataRatesSupportedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225DataRate (&lctxt, &pvalue->dataRatesSupported);
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.supportedPrefixesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
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);
}
/**************************************************************/
/* */
/* NonStandardProtocol */
/* */
/**************************************************************/
EXTERN int asn1PE_H225NonStandardProtocol (OOCTXT* pctxt, H225NonStandardProtocol* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode dataRatesSupported */
if (pvalue->m.dataRatesSupportedPresent) {
stat = asn1PE_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
if (stat != ASN_OK) return stat;
}
/* encode supportedPrefixes */
stat = asn1PE_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* T38FaxAnnexbOnlyCaps */
/* */
/**************************************************************/
EXTERN int asn1PE_H225T38FaxAnnexbOnlyCaps (OOCTXT* pctxt, H225T38FaxAnnexbOnlyCaps* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode dataRatesSupported */
if (pvalue->m.dataRatesSupportedPresent) {
stat = asn1PE_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
if (stat != ASN_OK) return stat;
}
/* encode supportedPrefixes */
stat = asn1PE_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
if (stat != ASN_OK) return stat;
/* encode t38FaxProtocol */
stat = asn1PE_H245DataProtocolCapability (pctxt, &pvalue->t38FaxProtocol);
if (stat != ASN_OK) return stat;
/* encode t38FaxProfile */
stat = asn1PE_H245T38FaxProfile (pctxt, &pvalue->t38FaxProfile);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* SIPCaps */
/* */
/**************************************************************/
EXTERN int asn1PE_H225SIPCaps (OOCTXT* pctxt, H225SIPCaps* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataRatesSupportedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode dataRatesSupported */
if (pvalue->m.dataRatesSupportedPresent) {
stat = asn1PE_H225_SeqOfH225DataRate (pctxt, &pvalue->dataRatesSupported);
if (stat != ASN_OK) return stat;
}
/* encode supportedPrefixes */
if (pvalue->m.supportedPrefixesPresent) {
stat = asn1PE_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* SupportedProtocols */
/* */
/**************************************************************/
EXTERN int asn1PE_H225SupportedProtocols (OOCTXT* pctxt, H225SupportedProtocols* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 9);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 8);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* nonStandardData */
case 1:
stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandardData);
if (stat != ASN_OK) return stat;
break;
/* h310 */
case 2:
stat = asn1PE_H225H310Caps (pctxt, pvalue->u.h310);
if (stat != ASN_OK) return stat;
break;
/* h320 */
case 3:
stat = asn1PE_H225H320Caps (pctxt, pvalue->u.h320);
if (stat != ASN_OK) return stat;
break;
/* h321 */
case 4:
stat = asn1PE_H225H321Caps (pctxt, pvalue->u.h321);
if (stat != ASN_OK) return stat;
break;
/* h322 */
case 5:
stat = asn1PE_H225H322Caps (pctxt, pvalue->u.h322);
if (stat != ASN_OK) return stat;
break;
/* h323 */
case 6:
stat = asn1PE_H225H323Caps (pctxt, pvalue->u.h323);
if (stat != ASN_OK) return stat;
break;
/* h324 */
case 7:
stat = asn1PE_H225H324Caps (pctxt, pvalue->u.h324);
if (stat != ASN_OK) return stat;
break;
/* voice */
case 8:
stat = asn1PE_H225VoiceCaps (pctxt, pvalue->u.voice);
if (stat != ASN_OK) return stat;
break;
/* t120_only */
case 9:
stat = asn1PE_H225T120OnlyCaps (pctxt, pvalue->u.t120_only);
if (stat != ASN_OK) return stat;
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 10);
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)
{
/* nonStandardProtocol */
case 10:
stat = asn1PE_H225NonStandardProtocol (&lctxt, pvalue->u.nonStandardProtocol);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* t38FaxAnnexbOnly */
case 11:
stat = asn1PE_H225T38FaxAnnexbOnlyCaps (&lctxt, pvalue->u.t38FaxAnnexbOnly);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* sip */
case 12:
stat = asn1PE_H225SIPCaps (&lctxt, pvalue->u.sip);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225SupportedProtocols */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225SupportedProtocols (OOCTXT* pctxt, H225_SeqOfH225SupportedProtocols* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225SupportedProtocols (pctxt, ((H225SupportedProtocols*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* GatewayInfo */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GatewayInfo (OOCTXT* pctxt, H225GatewayInfo* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.protocolPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode protocol */
if (pvalue->m.protocolPresent) {
stat = asn1PE_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->protocol);
if (stat != ASN_OK) return stat;
}
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* McuInfo */
/* */
/**************************************************************/
EXTERN int asn1PE_H225McuInfo (OOCTXT* pctxt, H225McuInfo* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.protocolPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
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.protocolPresent);
/* encode extension elements */
if (pvalue->m.protocolPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedProtocols (&lctxt, &pvalue->protocol);
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);
}
/**************************************************************/
/* */
/* TerminalInfo */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TerminalInfo (OOCTXT* pctxt, H225TerminalInfo* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* TunnelledProtocolAlternateIdentifier */
/* */
/**************************************************************/
EXTERN int asn1PE_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;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.protocolVariantPresent);
/* encode protocolType */
addSizeConstraint (pctxt, &protocolType_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->protocolType, 0, 8, 7, 7);
if (stat != ASN_OK) return stat;
/* encode protocolVariant */
if (pvalue->m.protocolVariantPresent) {
addSizeConstraint (pctxt, &protocolVariant_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->protocolVariant, 0, 8, 7, 7);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* TunnelledProtocol_id */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TunnelledProtocol_id (OOCTXT* pctxt, H225TunnelledProtocol_id* 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)
{
/* tunnelledProtocolObjectID */
case 1:
stat = encodeObjectIdentifier (pctxt, pvalue->u.tunnelledProtocolObjectID);
if (stat != ASN_OK) return stat;
break;
/* tunnelledProtocolAlternateID */
case 2:
stat = asn1PE_H225TunnelledProtocolAlternateIdentifier (pctxt, pvalue->u.tunnelledProtocolAlternateID);
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);
}
/**************************************************************/
/* */
/* TunnelledProtocol */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TunnelledProtocol (OOCTXT* pctxt, H225TunnelledProtocol* pvalue)
{
static Asn1SizeCnst subIdentifier_lsize1 = { 0, 1, 64, 0 };
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.subIdentifierPresent);
/* encode id */
stat = asn1PE_H225TunnelledProtocol_id (pctxt, &pvalue->id);
if (stat != ASN_OK) return stat;
/* encode subIdentifier */
if (pvalue->m.subIdentifierPresent) {
addSizeConstraint (pctxt, &subIdentifier_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->subIdentifier, 0, 8, 7, 7);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225TunnelledProtocol */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225TunnelledProtocol (OOCTXT* pctxt, H225_SeqOfH225TunnelledProtocol* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225TunnelledProtocol (pctxt, ((H225TunnelledProtocol*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* EndpointType */
/* */
/**************************************************************/
EXTERN int asn1PE_H225EndpointType (OOCTXT* pctxt, H225EndpointType* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.setPresent ||
pvalue->m.supportedTunnelledProtocolsPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.vendorPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatewayPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.mcuPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode vendor */
if (pvalue->m.vendorPresent) {
stat = asn1PE_H225VendorIdentifier (pctxt, &pvalue->vendor);
if (stat != ASN_OK) return stat;
}
/* encode gatekeeper */
if (pvalue->m.gatekeeperPresent) {
stat = asn1PE_H225GatekeeperInfo (pctxt, &pvalue->gatekeeper);
if (stat != ASN_OK) return stat;
}
/* encode gateway */
if (pvalue->m.gatewayPresent) {
stat = asn1PE_H225GatewayInfo (pctxt, &pvalue->gateway);
if (stat != ASN_OK) return stat;
}
/* encode mcu */
if (pvalue->m.mcuPresent) {
stat = asn1PE_H225McuInfo (pctxt, &pvalue->mcu);
if (stat != ASN_OK) return stat;
}
/* encode terminal */
if (pvalue->m.terminalPresent) {
stat = asn1PE_H225TerminalInfo (pctxt, &pvalue->terminal);
if (stat != ASN_OK) return stat;
}
/* encode mc */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->mc);
if (stat != ASN_OK) return stat;
/* encode undefinedNode */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->undefinedNode);
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.setPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedTunnelledProtocolsPresent);
/* encode extension elements */
if (pvalue->m.setPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225EndpointType_set (&lctxt, &pvalue->set);
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.supportedTunnelledProtocolsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225TunnelledProtocol (&lctxt, &pvalue->supportedTunnelledProtocols);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225CallReferenceValue */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225CallReferenceValue (OOCTXT* pctxt, H225_SeqOfH225CallReferenceValue* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = asn1PE_H225CallReferenceValue (pctxt, pvalue->elem[xx1]);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* Setup_UUIE_conferenceGoal */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Setup_UUIE_conferenceGoal (OOCTXT* pctxt, H225Setup_UUIE_conferenceGoal* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 3);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* create */
case 1:
/* NULL */
break;
/* join */
case 2:
/* NULL */
break;
/* invite */
case 3:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
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)
{
/* capability_negotiation */
case 4:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* callIndependentSupplementaryService */
case 5:
/* NULL */
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);
}
/**************************************************************/
/* */
/* Q954Details */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Q954Details (OOCTXT* pctxt, H225Q954Details* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode conferenceCalling */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->conferenceCalling);
if (stat != ASN_OK) return stat;
/* encode threePartyService */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->threePartyService);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* QseriesOptions */
/* */
/**************************************************************/
EXTERN int asn1PE_H225QseriesOptions (OOCTXT* pctxt, H225QseriesOptions* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode q932Full */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q932Full);
if (stat != ASN_OK) return stat;
/* encode q951Full */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q951Full);
if (stat != ASN_OK) return stat;
/* encode q952Full */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q952Full);
if (stat != ASN_OK) return stat;
/* encode q953Full */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q953Full);
if (stat != ASN_OK) return stat;
/* encode q955Full */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q955Full);
if (stat != ASN_OK) return stat;
/* encode q956Full */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q956Full);
if (stat != ASN_OK) return stat;
/* encode q957Full */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->q957Full);
if (stat != ASN_OK) return stat;
/* encode q954Info */
stat = asn1PE_H225Q954Details (pctxt, &pvalue->q954Info);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* CallType */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallType (OOCTXT* pctxt, H225CallType* 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)
{
/* pointToPoint */
case 1:
/* NULL */
break;
/* oneToN */
case 2:
/* NULL */
break;
/* nToOne */
case 3:
/* NULL */
break;
/* nToN */
case 4:
/* NULL */
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);
}
/**************************************************************/
/* */
/* CallIdentifier */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallIdentifier (OOCTXT* pctxt, H225CallIdentifier* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode guid */
stat = asn1PE_H225GloballyUniqueID (pctxt, &pvalue->guid);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* SecurityServiceMode */
/* */
/**************************************************************/
EXTERN int asn1PE_H225SecurityServiceMode (OOCTXT* pctxt, H225SecurityServiceMode* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 3);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* nonStandard */
case 1:
stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
if (stat != ASN_OK) return stat;
break;
/* none */
case 2:
/* NULL */
break;
/* default_ */
case 3:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* SecurityCapabilities */
/* */
/**************************************************************/
EXTERN int asn1PE_H225SecurityCapabilities (OOCTXT* pctxt, H225SecurityCapabilities* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
/* encode nonStandard */
if (pvalue->m.nonStandardPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandard);
if (stat != ASN_OK) return stat;
}
/* encode encryption */
stat = asn1PE_H225SecurityServiceMode (pctxt, &pvalue->encryption);
if (stat != ASN_OK) return stat;
/* encode authenticaton */
stat = asn1PE_H225SecurityServiceMode (pctxt, &pvalue->authenticaton);
if (stat != ASN_OK) return stat;
/* encode integrity */
stat = asn1PE_H225SecurityServiceMode (pctxt, &pvalue->integrity);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* H245Security */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H245Security (OOCTXT* pctxt, H225H245Security* 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)
{
/* nonStandard */
case 1:
stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
if (stat != ASN_OK) return stat;
break;
/* noSecurity */
case 2:
/* NULL */
break;
/* tls */
case 3:
stat = asn1PE_H225SecurityCapabilities (pctxt, pvalue->u.tls);
if (stat != ASN_OK) return stat;
break;
/* ipsec */
case 4:
stat = asn1PE_H225SecurityCapabilities (pctxt, pvalue->u.ipsec);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225H245Security */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225H245Security (OOCTXT* pctxt, H225_SeqOfH225H245Security* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225H245Security (pctxt, ((H225H245Security*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225ClearToken */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225ClearToken (OOCTXT* pctxt, H225_SeqOfH225ClearToken* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H235ClearToken (pctxt, ((H235ClearToken*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* CryptoH323Token_cryptoEPPwdHash */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CryptoH323Token_cryptoEPPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPPwdHash* pvalue)
{
int stat = ASN_OK;
/* encode alias */
stat = asn1PE_H225AliasAddress (pctxt, &pvalue->alias);
if (stat != ASN_OK) return stat;
/* encode timeStamp */
stat = asn1PE_H235TimeStamp (pctxt, pvalue->timeStamp);
if (stat != ASN_OK) return stat;
/* encode token */
stat = asn1PE_H235HASHED (pctxt, &pvalue->token);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* CryptoH323Token_cryptoGKPwdHash */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CryptoH323Token_cryptoGKPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKPwdHash* pvalue)
{
int stat = ASN_OK;
/* encode gatekeeperId */
stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperId);
if (stat != ASN_OK) return stat;
/* encode timeStamp */
stat = asn1PE_H235TimeStamp (pctxt, pvalue->timeStamp);
if (stat != ASN_OK) return stat;
/* encode token */
stat = asn1PE_H235HASHED (pctxt, &pvalue->token);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* CryptoH323Token_cryptoEPCert */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CryptoH323Token_cryptoEPCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPCert* pvalue)
{
int stat = ASN_OK;
/* encode toBeSigned */
stat = asn1PE_H235EncodedPwdCertToken (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);
}
/**************************************************************/
/* */
/* CryptoH323Token_cryptoGKCert */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CryptoH323Token_cryptoGKCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKCert* pvalue)
{
int stat = ASN_OK;
/* encode toBeSigned */
stat = asn1PE_H235EncodedPwdCertToken (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);
}
/**************************************************************/
/* */
/* CryptoH323Token_cryptoFastStart */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CryptoH323Token_cryptoFastStart (OOCTXT* pctxt, H225CryptoH323Token_cryptoFastStart* pvalue)
{
int stat = ASN_OK;
/* encode toBeSigned */
stat = asn1PE_H225EncodedFastStartToken (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);
}
/**************************************************************/
/* */
/* CryptoH323Token */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CryptoH323Token (OOCTXT* pctxt, H225CryptoH323Token* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 8);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 7);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* cryptoEPPwdHash */
case 1:
stat = asn1PE_H225CryptoH323Token_cryptoEPPwdHash (pctxt, pvalue->u.cryptoEPPwdHash);
if (stat != ASN_OK) return stat;
break;
/* cryptoGKPwdHash */
case 2:
stat = asn1PE_H225CryptoH323Token_cryptoGKPwdHash (pctxt, pvalue->u.cryptoGKPwdHash);
if (stat != ASN_OK) return stat;
break;
/* cryptoEPPwdEncr */
case 3:
stat = asn1PE_H235ENCRYPTED (pctxt, pvalue->u.cryptoEPPwdEncr);
if (stat != ASN_OK) return stat;
break;
/* cryptoGKPwdEncr */
case 4:
stat = asn1PE_H235ENCRYPTED (pctxt, pvalue->u.cryptoGKPwdEncr);
if (stat != ASN_OK) return stat;
break;
/* cryptoEPCert */
case 5:
stat = asn1PE_H225CryptoH323Token_cryptoEPCert (pctxt, pvalue->u.cryptoEPCert);
if (stat != ASN_OK) return stat;
break;
/* cryptoGKCert */
case 6:
stat = asn1PE_H225CryptoH323Token_cryptoGKCert (pctxt, pvalue->u.cryptoGKCert);
if (stat != ASN_OK) return stat;
break;
/* cryptoFastStart */
case 7:
stat = asn1PE_H225CryptoH323Token_cryptoFastStart (pctxt, pvalue->u.cryptoFastStart);
if (stat != ASN_OK) return stat;
break;
/* nestedcryptoToken */
case 8:
stat = asn1PE_H235CryptoToken (pctxt, pvalue->u.nestedcryptoToken);
if (stat != ASN_OK) return stat;
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 9);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225CryptoH323Token */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225CryptoH323Token (OOCTXT* pctxt, H225_SeqOfH225CryptoH323Token* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225CryptoH323Token (pctxt, ((H225CryptoH323Token*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* Setup_UUIE_fastStart */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Setup_UUIE_fastStart (OOCTXT* pctxt, H225Setup_UUIE_fastStart* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* ScnConnectionType */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ScnConnectionType (OOCTXT* pctxt, H225ScnConnectionType* pvalue)
{
int stat = ASN_OK;
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)
{
/* unknown */
case 1:
/* NULL */
break;
/* bChannel */
case 2:
/* NULL */
break;
/* hybrid2x64 */
case 3:
/* NULL */
break;
/* hybrid384 */
case 4:
/* NULL */
break;
/* hybrid1536 */
case 5:
/* NULL */
break;
/* hybrid1920 */
case 6:
/* NULL */
break;
/* multirate */
case 7:
/* NULL */
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 */
}
return (stat);
}
/**************************************************************/
/* */
/* ScnConnectionAggregation */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ScnConnectionAggregation (OOCTXT* pctxt, H225ScnConnectionAggregation* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 6);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* auto_ */
case 1:
/* NULL */
break;
/* none */
case 2:
/* NULL */
break;
/* h221 */
case 3:
/* NULL */
break;
/* bonded_mode1 */
case 4:
/* NULL */
break;
/* bonded_mode2 */
case 5:
/* NULL */
break;
/* bonded_mode3 */
case 6:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* Setup_UUIE_connectionParameters */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Setup_UUIE_connectionParameters (OOCTXT* pctxt, H225Setup_UUIE_connectionParameters* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode connectionType */
stat = asn1PE_H225ScnConnectionType (pctxt, &pvalue->connectionType);
if (stat != ASN_OK) return stat;
/* encode numberOfScnConnections */
stat = encodeConsUnsigned (pctxt, pvalue->numberOfScnConnections, 0U, 65535U);
if (stat != ASN_OK) return stat;
/* encode connectionAggregation */
stat = asn1PE_H225ScnConnectionAggregation (pctxt, &pvalue->connectionAggregation);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* Setup_UUIE_language */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Setup_UUIE_language (OOCTXT* pctxt, H225Setup_UUIE_language* pvalue)
{
static Asn1SizeCnst element_lsize1 = { 0, 1, 32, 0 };
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
addSizeConstraint (pctxt, &element_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->elem[xx1], 0, 8, 7, 7);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* PresentationIndicator */
/* */
/**************************************************************/
EXTERN int asn1PE_H225PresentationIndicator (OOCTXT* pctxt, H225PresentationIndicator* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 3);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* presentationAllowed */
case 1:
/* NULL */
break;
/* presentationRestricted */
case 2:
/* NULL */
break;
/* addressNotAvailable */
case 3:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* CallCreditServiceControl_billingMode */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallCreditServiceControl_billingMode (OOCTXT* pctxt, H225CallCreditServiceControl_billingMode* 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)
{
/* credit */
case 1:
/* NULL */
break;
/* debit */
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);
}
/**************************************************************/
/* */
/* CallCreditServiceControl_callStartingPoint */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallCreditServiceControl_callStartingPoint (OOCTXT* pctxt, H225CallCreditServiceControl_callStartingPoint* 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)
{
/* alerting */
case 1:
/* NULL */
break;
/* connect */
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);
}
/**************************************************************/
/* */
/* CallCreditServiceControl */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallCreditServiceControl (OOCTXT* pctxt, H225CallCreditServiceControl* pvalue)
{
static Asn1SizeCnst amountString_lsize1 = { 0, 1, 512, 0 };
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.amountStringPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.billingModePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callDurationLimitPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.enforceCallDurationLimitPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callStartingPointPresent);
/* encode amountString */
if (pvalue->m.amountStringPresent) {
addSizeConstraint (pctxt, &amountString_lsize1);
stat = encodeBMPString (pctxt, pvalue->amountString, 0);
if (stat != ASN_OK) return stat;
}
/* encode billingMode */
if (pvalue->m.billingModePresent) {
stat = asn1PE_H225CallCreditServiceControl_billingMode (pctxt, &pvalue->billingMode);
if (stat != ASN_OK) return stat;
}
/* encode callDurationLimit */
if (pvalue->m.callDurationLimitPresent) {
stat = encodeConsUnsigned (pctxt, pvalue->callDurationLimit, 1U, ASN1UINT_MAX);
if (stat != ASN_OK) return stat;
}
/* encode enforceCallDurationLimit */
if (pvalue->m.enforceCallDurationLimitPresent) {
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->enforceCallDurationLimit);
if (stat != ASN_OK) return stat;
}
/* encode callStartingPoint */
if (pvalue->m.callStartingPointPresent) {
stat = asn1PE_H225CallCreditServiceControl_callStartingPoint (pctxt, &pvalue->callStartingPoint);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* ServiceControlDescriptor */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ServiceControlDescriptor (OOCTXT* pctxt, H225ServiceControlDescriptor* pvalue)
{
static Asn1SizeCnst url_lsize1 = { 0, 0, 512, 0 };
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)
{
/* url */
case 1:
addSizeConstraint (pctxt, &url_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->u.url, 0, 8, 7, 7);
if (stat != ASN_OK) return stat;
break;
/* signal */
case 2:
stat = asn1PE_H225H248SignalsDescriptor (pctxt, *pvalue->u.signal);
if (stat != ASN_OK) return stat;
break;
/* nonStandard */
case 3:
stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
if (stat != ASN_OK) return stat;
break;
/* callCreditServiceControl */
case 4:
stat = asn1PE_H225CallCreditServiceControl (pctxt, pvalue->u.callCreditServiceControl);
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);
}
/**************************************************************/
/* */
/* ServiceControlSession_reason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ServiceControlSession_reason (OOCTXT* pctxt, H225ServiceControlSession_reason* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 3);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* open */
case 1:
/* NULL */
break;
/* refresh */
case 2:
/* NULL */
break;
/* close */
case 3:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* ServiceControlSession */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ServiceControlSession (OOCTXT* pctxt, H225ServiceControlSession* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.contentsPresent);
/* encode sessionId */
stat = encodeConsUnsigned (pctxt, pvalue->sessionId, 0U, 255U);
if (stat != ASN_OK) return stat;
/* encode contents */
if (pvalue->m.contentsPresent) {
stat = asn1PE_H225ServiceControlDescriptor (pctxt, &pvalue->contents);
if (stat != ASN_OK) return stat;
}
/* encode reason */
stat = asn1PE_H225ServiceControlSession_reason (pctxt, &pvalue->reason);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225ServiceControlSession */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225ServiceControlSession (OOCTXT* pctxt, H225_SeqOfH225ServiceControlSession* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225ServiceControlSession (pctxt, ((H225ServiceControlSession*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* CarrierInfo */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CarrierInfo (OOCTXT* pctxt, H225CarrierInfo* pvalue)
{
static Asn1SizeCnst carrierName_lsize1 = { 0, 1, 128, 0 };
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.carrierIdentificationCodePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.carrierNamePresent);
/* encode carrierIdentificationCode */
if (pvalue->m.carrierIdentificationCodePresent) {
stat = asn1PE_H225CarrierInfo_carrierIdentificationCode (pctxt, &pvalue->carrierIdentificationCode);
if (stat != ASN_OK) return stat;
}
/* encode carrierName */
if (pvalue->m.carrierNamePresent) {
addSizeConstraint (pctxt, &carrierName_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->carrierName, 0, 8, 7, 7);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* CallsAvailable */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallsAvailable (OOCTXT* pctxt, H225CallsAvailable* pvalue)
{
static Asn1SizeCnst group_lsize1 = { 0, 1, 128, 0 };
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.carrierPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.groupPresent);
/* encode calls */
stat = encodeConsUnsigned (pctxt, pvalue->calls, 0U, ASN1UINT_MAX);
if (stat != ASN_OK) return stat;
/* encode group */
if (pvalue->m.groupPresent) {
addSizeConstraint (pctxt, &group_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->group, 0, 8, 7, 7);
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.carrierPresent);
/* encode extension elements */
if (pvalue->m.carrierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CarrierInfo (&lctxt, &pvalue->carrier);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225CallsAvailable */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225CallsAvailable (OOCTXT* pctxt, H225_SeqOfH225CallsAvailable* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225CallsAvailable (pctxt, ((H225CallsAvailable*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* CallCapacityInfo */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallCapacityInfo (OOCTXT* pctxt, H225CallCapacityInfo* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.sipGwCallsAvailablePresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.voiceGwCallsAvailablePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h310GwCallsAvailablePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h320GwCallsAvailablePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h321GwCallsAvailablePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h322GwCallsAvailablePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h323GwCallsAvailablePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h324GwCallsAvailablePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.t120OnlyGwCallsAvailablePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.t38FaxAnnexbOnlyGwCallsAvailablePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalCallsAvailablePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.mcuCallsAvailablePresent);
/* encode voiceGwCallsAvailable */
if (pvalue->m.voiceGwCallsAvailablePresent) {
stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->voiceGwCallsAvailable);
if (stat != ASN_OK) return stat;
}
/* encode h310GwCallsAvailable */
if (pvalue->m.h310GwCallsAvailablePresent) {
stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h310GwCallsAvailable);
if (stat != ASN_OK) return stat;
}
/* encode h320GwCallsAvailable */
if (pvalue->m.h320GwCallsAvailablePresent) {
stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h320GwCallsAvailable);
if (stat != ASN_OK) return stat;
}
/* encode h321GwCallsAvailable */
if (pvalue->m.h321GwCallsAvailablePresent) {
stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h321GwCallsAvailable);
if (stat != ASN_OK) return stat;
}
/* encode h322GwCallsAvailable */
if (pvalue->m.h322GwCallsAvailablePresent) {
stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h322GwCallsAvailable);
if (stat != ASN_OK) return stat;
}
/* encode h323GwCallsAvailable */
if (pvalue->m.h323GwCallsAvailablePresent) {
stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h323GwCallsAvailable);
if (stat != ASN_OK) return stat;
}
/* encode h324GwCallsAvailable */
if (pvalue->m.h324GwCallsAvailablePresent) {
stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->h324GwCallsAvailable);
if (stat != ASN_OK) return stat;
}
/* encode t120OnlyGwCallsAvailable */
if (pvalue->m.t120OnlyGwCallsAvailablePresent) {
stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->t120OnlyGwCallsAvailable);
if (stat != ASN_OK) return stat;
}
/* encode t38FaxAnnexbOnlyGwCallsAvailable */
if (pvalue->m.t38FaxAnnexbOnlyGwCallsAvailablePresent) {
stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->t38FaxAnnexbOnlyGwCallsAvailable);
if (stat != ASN_OK) return stat;
}
/* encode terminalCallsAvailable */
if (pvalue->m.terminalCallsAvailablePresent) {
stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->terminalCallsAvailable);
if (stat != ASN_OK) return stat;
}
/* encode mcuCallsAvailable */
if (pvalue->m.mcuCallsAvailablePresent) {
stat = asn1PE_H225_SeqOfH225CallsAvailable (pctxt, &pvalue->mcuCallsAvailable);
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.sipGwCallsAvailablePresent);
/* encode extension elements */
if (pvalue->m.sipGwCallsAvailablePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CallsAvailable (&lctxt, &pvalue->sipGwCallsAvailable);
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);
}
/**************************************************************/
/* */
/* CallCapacity */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallCapacity (OOCTXT* pctxt, H225CallCapacity* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.maximumCallCapacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.currentCallCapacityPresent);
/* encode maximumCallCapacity */
if (pvalue->m.maximumCallCapacityPresent) {
stat = asn1PE_H225CallCapacityInfo (pctxt, &pvalue->maximumCallCapacity);
if (stat != ASN_OK) return stat;
}
/* encode currentCallCapacity */
if (pvalue->m.currentCallCapacityPresent) {
stat = asn1PE_H225CallCapacityInfo (pctxt, &pvalue->currentCallCapacity);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225CicInfo_cic_element */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225CicInfo_cic_element (OOCTXT* pctxt, H225_SeqOfH225CicInfo_cic_element* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = asn1PE_H225CicInfo_cic_element (pctxt, &pvalue->elem[xx1]);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* CicInfo */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CicInfo (OOCTXT* pctxt, H225CicInfo* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode cic */
stat = asn1PE_H225_SeqOfH225CicInfo_cic_element (pctxt, &pvalue->cic);
if (stat != ASN_OK) return stat;
/* encode pointCode */
stat = asn1PE_H225CicInfo_pointCode (pctxt, &pvalue->pointCode);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* GroupID_member */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GroupID_member (OOCTXT* pctxt, H225GroupID_member* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeConsUnsigned (pctxt, pvalue->elem[xx1], 0U, 65535U);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* GroupID */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GroupID (OOCTXT* pctxt, H225GroupID* pvalue)
{
static Asn1SizeCnst group_lsize1 = { 0, 1, 128, 0 };
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.memberPresent);
/* encode member */
if (pvalue->m.memberPresent) {
stat = asn1PE_H225GroupID_member (pctxt, &pvalue->member);
if (stat != ASN_OK) return stat;
}
/* encode group */
addSizeConstraint (pctxt, &group_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->group, 0, 8, 7, 7);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* CircuitIdentifier */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CircuitIdentifier (OOCTXT* pctxt, H225CircuitIdentifier* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.carrierPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cicPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.groupPresent);
/* encode cic */
if (pvalue->m.cicPresent) {
stat = asn1PE_H225CicInfo (pctxt, &pvalue->cic);
if (stat != ASN_OK) return stat;
}
/* encode group */
if (pvalue->m.groupPresent) {
stat = asn1PE_H225GroupID (pctxt, &pvalue->group);
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.carrierPresent);
/* encode extension elements */
if (pvalue->m.carrierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CarrierInfo (&lctxt, &pvalue->carrier);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225GenericData */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225GenericData (OOCTXT* pctxt, H225_SeqOfH225GenericData* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225GenericData (pctxt, ((H225GenericData*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* CircuitInfo */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CircuitInfo (OOCTXT* pctxt, H225CircuitInfo* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.sourceCircuitIDPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationCircuitIDPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode sourceCircuitID */
if (pvalue->m.sourceCircuitIDPresent) {
stat = asn1PE_H225CircuitIdentifier (pctxt, &pvalue->sourceCircuitID);
if (stat != ASN_OK) return stat;
}
/* encode destinationCircuitID */
if (pvalue->m.destinationCircuitIDPresent) {
stat = asn1PE_H225CircuitIdentifier (pctxt, &pvalue->destinationCircuitID);
if (stat != ASN_OK) return stat;
}
/* encode genericData */
if (pvalue->m.genericDataPresent) {
stat = asn1PE_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225FeatureDescriptor */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225FeatureDescriptor (OOCTXT* pctxt, H225_SeqOfH225FeatureDescriptor* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225FeatureDescriptor (pctxt, ((H225FeatureDescriptor*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* Setup_UUIE_parallelH245Control */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Setup_UUIE_parallelH245Control (OOCTXT* pctxt, H225Setup_UUIE_parallelH245Control* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* ExtendedAliasAddress */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ExtendedAliasAddress (OOCTXT* pctxt, H225ExtendedAliasAddress* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.presentationIndicatorPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.screeningIndicatorPresent);
/* encode address */
stat = asn1PE_H225AliasAddress (pctxt, &pvalue->address);
if (stat != ASN_OK) return stat;
/* encode presentationIndicator */
if (pvalue->m.presentationIndicatorPresent) {
stat = asn1PE_H225PresentationIndicator (pctxt, &pvalue->presentationIndicator);
if (stat != ASN_OK) return stat;
}
/* encode screeningIndicator */
if (pvalue->m.screeningIndicatorPresent) {
stat = asn1PE_H225ScreeningIndicator (pctxt, pvalue->screeningIndicator);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225ExtendedAliasAddress */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225ExtendedAliasAddress (OOCTXT* pctxt, H225_SeqOfH225ExtendedAliasAddress* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225ExtendedAliasAddress (pctxt, ((H225ExtendedAliasAddress*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* Setup_UUIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Setup_UUIE (OOCTXT* pctxt, H225Setup_UUIE* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.sourceCallSignalAddressPresent ||
pvalue->m.remoteExtensionAddressPresent ||
pvalue->m.callIdentifierPresent ||
pvalue->m.h245SecurityCapabilityPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.fastStartPresent ||
pvalue->m.mediaWaitForConnectPresent ||
pvalue->m.canOverlapSendPresent ||
pvalue->m.endpointIdentifierPresent ||
pvalue->m.multipleCallsPresent ||
pvalue->m.maintainConnectionPresent ||
pvalue->m.connectionParametersPresent ||
pvalue->m.languagePresent ||
pvalue->m.presentationIndicatorPresent ||
pvalue->m.screeningIndicatorPresent ||
pvalue->m.serviceControlPresent ||
pvalue->m.symmetricOperationRequiredPresent ||
pvalue->m.capacityPresent ||
pvalue->m.circuitInfoPresent ||
pvalue->m.desiredProtocolsPresent ||
pvalue->m.neededFeaturesPresent ||
pvalue->m.desiredFeaturesPresent ||
pvalue->m.supportedFeaturesPresent ||
pvalue->m.parallelH245ControlPresent ||
pvalue->m.additionalSourceAddressesPresent ||
pvalue->m.hopCountPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245AddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.sourceAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destCallSignalAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCallInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCRVPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callServicesPresent);
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode h245Address */
if (pvalue->m.h245AddressPresent) {
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->h245Address);
if (stat != ASN_OK) return stat;
}
/* encode sourceAddress */
if (pvalue->m.sourceAddressPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->sourceAddress);
if (stat != ASN_OK) return stat;
}
/* encode sourceInfo */
stat = asn1PE_H225EndpointType (pctxt, &pvalue->sourceInfo);
if (stat != ASN_OK) return stat;
/* encode destinationAddress */
if (pvalue->m.destinationAddressPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destinationAddress);
if (stat != ASN_OK) return stat;
}
/* encode destCallSignalAddress */
if (pvalue->m.destCallSignalAddressPresent) {
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->destCallSignalAddress);
if (stat != ASN_OK) return stat;
}
/* encode destExtraCallInfo */
if (pvalue->m.destExtraCallInfoPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destExtraCallInfo);
if (stat != ASN_OK) return stat;
}
/* encode destExtraCRV */
if (pvalue->m.destExtraCRVPresent) {
stat = asn1PE_H225_SeqOfH225CallReferenceValue (pctxt, &pvalue->destExtraCRV);
if (stat != ASN_OK) return stat;
}
/* encode activeMC */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->activeMC);
if (stat != ASN_OK) return stat;
/* encode conferenceID */
stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
if (stat != ASN_OK) return stat;
/* encode conferenceGoal */
stat = asn1PE_H225Setup_UUIE_conferenceGoal (pctxt, &pvalue->conferenceGoal);
if (stat != ASN_OK) return stat;
/* encode callServices */
if (pvalue->m.callServicesPresent) {
stat = asn1PE_H225QseriesOptions (pctxt, &pvalue->callServices);
if (stat != ASN_OK) return stat;
}
/* encode callType */
stat = asn1PE_H225CallType (pctxt, &pvalue->callType);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 26);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.sourceCallSignalAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.remoteExtensionAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245SecurityCapabilityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.mediaWaitForConnectPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.canOverlapSendPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.connectionParametersPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.languagePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.presentationIndicatorPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.screeningIndicatorPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.symmetricOperationRequiredPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredProtocolsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.neededFeaturesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredFeaturesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedFeaturesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.parallelH245ControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.additionalSourceAddressesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.hopCountPresent);
/* encode extension elements */
if (pvalue->m.sourceCallSignalAddressPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225TransportAddress (&lctxt, &pvalue->sourceCallSignalAddress);
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.remoteExtensionAddressPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AliasAddress (&lctxt, &pvalue->remoteExtensionAddress);
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.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.h245SecurityCapabilityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225H245Security (&lctxt, &pvalue->h245SecurityCapability);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.fastStartPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225Setup_UUIE_fastStart (&lctxt, &pvalue->fastStart);
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.mediaWaitForConnectPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->mediaWaitForConnect);
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.canOverlapSendPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->canOverlapSend);
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.endpointIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225EndpointIdentifier (&lctxt, pvalue->endpointIdentifier);
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.multipleCallsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
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.maintainConnectionPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
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.connectionParametersPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225Setup_UUIE_connectionParameters (&lctxt, &pvalue->connectionParameters);
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.languagePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225Setup_UUIE_language (&lctxt, &pvalue->language);
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.presentationIndicatorPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225PresentationIndicator (&lctxt, &pvalue->presentationIndicator);
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.screeningIndicatorPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ScreeningIndicator (&lctxt, pvalue->screeningIndicator);
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.serviceControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
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.symmetricOperationRequiredPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.capacityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
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.circuitInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
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.desiredProtocolsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedProtocols (&lctxt, &pvalue->desiredProtocols);
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.neededFeaturesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225FeatureDescriptor (&lctxt, &pvalue->neededFeatures);
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.desiredFeaturesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225FeatureDescriptor (&lctxt, &pvalue->desiredFeatures);
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.supportedFeaturesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225FeatureDescriptor (&lctxt, &pvalue->supportedFeatures);
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.parallelH245ControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225Setup_UUIE_parallelH245Control (&lctxt, &pvalue->parallelH245Control);
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.additionalSourceAddressesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ExtendedAliasAddress (&lctxt, &pvalue->additionalSourceAddresses);
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.hopCountPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeConsUnsigned (&lctxt, pvalue->hopCount, 1U, 31U);
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);
}
/**************************************************************/
/* */
/* CallProceeding_UUIE_fastStart */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallProceeding_UUIE_fastStart (OOCTXT* pctxt, H225CallProceeding_UUIE_fastStart* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* FeatureSet */
/* */
/**************************************************************/
EXTERN int asn1PE_H225FeatureSet (OOCTXT* pctxt, H225FeatureSet* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.neededFeaturesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredFeaturesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedFeaturesPresent);
/* encode replacementFeatureSet */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->replacementFeatureSet);
if (stat != ASN_OK) return stat;
/* encode neededFeatures */
if (pvalue->m.neededFeaturesPresent) {
stat = asn1PE_H225_SeqOfH225FeatureDescriptor (pctxt, &pvalue->neededFeatures);
if (stat != ASN_OK) return stat;
}
/* encode desiredFeatures */
if (pvalue->m.desiredFeaturesPresent) {
stat = asn1PE_H225_SeqOfH225FeatureDescriptor (pctxt, &pvalue->desiredFeatures);
if (stat != ASN_OK) return stat;
}
/* encode supportedFeatures */
if (pvalue->m.supportedFeaturesPresent) {
stat = asn1PE_H225_SeqOfH225FeatureDescriptor (pctxt, &pvalue->supportedFeatures);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* CallProceeding_UUIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallProceeding_UUIE (OOCTXT* pctxt, H225CallProceeding_UUIE* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
pvalue->m.h245SecurityModePresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.fastStartPresent ||
pvalue->m.multipleCallsPresent ||
pvalue->m.maintainConnectionPresent ||
pvalue->m.fastConnectRefusedPresent ||
pvalue->m.featureSetPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245AddressPresent);
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode destinationInfo */
stat = asn1PE_H225EndpointType (pctxt, &pvalue->destinationInfo);
if (stat != ASN_OK) return stat;
/* encode h245Address */
if (pvalue->m.h245AddressPresent) {
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->h245Address);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 8);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245SecurityModePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastConnectRefusedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
/* encode extension elements */
if (pvalue->m.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.h245SecurityModePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225H245Security (&lctxt, &pvalue->h245SecurityMode);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.fastStartPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallProceeding_UUIE_fastStart (&lctxt, &pvalue->fastStart);
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.multipleCallsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
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.maintainConnectionPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
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.fastConnectRefusedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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);
}
/**************************************************************/
/* */
/* Connect_UUIE_fastStart */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Connect_UUIE_fastStart (OOCTXT* pctxt, H225Connect_UUIE_fastStart* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* Connect_UUIE_language */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Connect_UUIE_language (OOCTXT* pctxt, H225Connect_UUIE_language* pvalue)
{
static Asn1SizeCnst element_lsize1 = { 0, 1, 32, 0 };
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
addSizeConstraint (pctxt, &element_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->elem[xx1], 0, 8, 7, 7);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* Connect_UUIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Connect_UUIE (OOCTXT* pctxt, H225Connect_UUIE* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
pvalue->m.h245SecurityModePresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.fastStartPresent ||
pvalue->m.multipleCallsPresent ||
pvalue->m.maintainConnectionPresent ||
pvalue->m.languagePresent ||
pvalue->m.connectedAddressPresent ||
pvalue->m.presentationIndicatorPresent ||
pvalue->m.screeningIndicatorPresent ||
pvalue->m.fastConnectRefusedPresent ||
pvalue->m.serviceControlPresent ||
pvalue->m.capacityPresent ||
pvalue->m.featureSetPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245AddressPresent);
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode h245Address */
if (pvalue->m.h245AddressPresent) {
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->h245Address);
if (stat != ASN_OK) return stat;
}
/* encode destinationInfo */
stat = asn1PE_H225EndpointType (pctxt, &pvalue->destinationInfo);
if (stat != ASN_OK) return stat;
/* encode conferenceID */
stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 14);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245SecurityModePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.languagePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.connectedAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.presentationIndicatorPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.screeningIndicatorPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastConnectRefusedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
/* encode extension elements */
if (pvalue->m.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.h245SecurityModePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225H245Security (&lctxt, &pvalue->h245SecurityMode);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.fastStartPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225Connect_UUIE_fastStart (&lctxt, &pvalue->fastStart);
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.multipleCallsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
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.maintainConnectionPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
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.languagePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225Connect_UUIE_language (&lctxt, &pvalue->language);
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.connectedAddressPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->connectedAddress);
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.presentationIndicatorPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225PresentationIndicator (&lctxt, &pvalue->presentationIndicator);
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.screeningIndicatorPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ScreeningIndicator (&lctxt, pvalue->screeningIndicator);
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.fastConnectRefusedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.serviceControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
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.capacityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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);
}
/**************************************************************/
/* */
/* Alerting_UUIE_fastStart */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Alerting_UUIE_fastStart (OOCTXT* pctxt, H225Alerting_UUIE_fastStart* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* Alerting_UUIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Alerting_UUIE (OOCTXT* pctxt, H225Alerting_UUIE* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
pvalue->m.h245SecurityModePresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.fastStartPresent ||
pvalue->m.multipleCallsPresent ||
pvalue->m.maintainConnectionPresent ||
pvalue->m.alertingAddressPresent ||
pvalue->m.presentationIndicatorPresent ||
pvalue->m.screeningIndicatorPresent ||
pvalue->m.fastConnectRefusedPresent ||
pvalue->m.serviceControlPresent ||
pvalue->m.capacityPresent ||
pvalue->m.featureSetPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245AddressPresent);
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode destinationInfo */
stat = asn1PE_H225EndpointType (pctxt, &pvalue->destinationInfo);
if (stat != ASN_OK) return stat;
/* encode h245Address */
if (pvalue->m.h245AddressPresent) {
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->h245Address);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 13);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245SecurityModePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alertingAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.presentationIndicatorPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.screeningIndicatorPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastConnectRefusedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
/* encode extension elements */
if (pvalue->m.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.h245SecurityModePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225H245Security (&lctxt, &pvalue->h245SecurityMode);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.fastStartPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225Alerting_UUIE_fastStart (&lctxt, &pvalue->fastStart);
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.multipleCallsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
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.maintainConnectionPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
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.alertingAddressPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->alertingAddress);
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.presentationIndicatorPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225PresentationIndicator (&lctxt, &pvalue->presentationIndicator);
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.screeningIndicatorPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ScreeningIndicator (&lctxt, pvalue->screeningIndicator);
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.fastConnectRefusedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.serviceControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
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.capacityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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);
}
/**************************************************************/
/* */
/* Information_UUIE_fastStart */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Information_UUIE_fastStart (OOCTXT* pctxt, H225Information_UUIE_fastStart* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* Information_UUIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Information_UUIE (OOCTXT* pctxt, H225Information_UUIE* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.fastStartPresent ||
pvalue->m.fastConnectRefusedPresent ||
pvalue->m.circuitInfoPresent);
encodeBit (pctxt, extbit);
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 5);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastConnectRefusedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
/* encode extension elements */
if (pvalue->m.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.fastStartPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225Information_UUIE_fastStart (&lctxt, &pvalue->fastStart);
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.fastConnectRefusedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.circuitInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
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);
}
/**************************************************************/
/* */
/* SecurityErrors */
/* */
/**************************************************************/
EXTERN int asn1PE_H225SecurityErrors (OOCTXT* pctxt, H225SecurityErrors* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 16);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 15);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* securityWrongSyncTime */
case 1:
/* NULL */
break;
/* securityReplay */
case 2:
/* NULL */
break;
/* securityWrongGeneralID */
case 3:
/* NULL */
break;
/* securityWrongSendersID */
case 4:
/* NULL */
break;
/* securityIntegrityFailed */
case 5:
/* NULL */
break;
/* securityWrongOID */
case 6:
/* NULL */
break;
/* securityDHmismatch */
case 7:
/* NULL */
break;
/* securityCertificateExpired */
case 8:
/* NULL */
break;
/* securityCertificateDateInvalid */
case 9:
/* NULL */
break;
/* securityCertificateRevoked */
case 10:
/* NULL */
break;
/* securityCertificateNotReadable */
case 11:
/* NULL */
break;
/* securityCertificateSignatureInvalid */
case 12:
/* NULL */
break;
/* securityCertificateMissing */
case 13:
/* NULL */
break;
/* securityCertificateIncomplete */
case 14:
/* NULL */
break;
/* securityUnsupportedCertificateAlgOID */
case 15:
/* NULL */
break;
/* securityUnknownCA */
case 16:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 17);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* ReleaseCompleteReason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ReleaseCompleteReason (OOCTXT* pctxt, H225ReleaseCompleteReason* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 12);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 11);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* noBandwidth */
case 1:
/* NULL */
break;
/* gatekeeperResources */
case 2:
/* NULL */
break;
/* unreachableDestination */
case 3:
/* NULL */
break;
/* destinationRejection */
case 4:
/* NULL */
break;
/* invalidRevision */
case 5:
/* NULL */
break;
/* noPermission */
case 6:
/* NULL */
break;
/* unreachableGatekeeper */
case 7:
/* NULL */
break;
/* gatewayResources */
case 8:
/* NULL */
break;
/* badFormatAddress */
case 9:
/* NULL */
break;
/* adaptiveBusy */
case 10:
/* NULL */
break;
/* inConf */
case 11:
/* NULL */
break;
/* undefinedReason */
case 12:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 13);
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)
{
/* facilityCallDeflection */
case 13:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityDenied */
case 14:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* calledPartyNotRegistered */
case 15:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* callerNotRegistered */
case 16:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* newConnectionNeeded */
case 17:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* nonStandardReason */
case 18:
stat = asn1PE_H225NonStandardParameter (&lctxt, pvalue->u.nonStandardReason);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* replaceWithConferenceInvite */
case 19:
stat = asn1PE_H225ConferenceIdentifier (&lctxt, pvalue->u.replaceWithConferenceInvite);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* genericDataReason */
case 20:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* neededFeatureNotSupported */
case 21:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* tunnelledSignallingRejected */
case 22:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* invalidCID */
case 23:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityError */
case 24:
stat = asn1PE_H225SecurityErrors (&lctxt, pvalue->u.securityError);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* hopCountExceeded */
case 25:
/* NULL */
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);
}
/**************************************************************/
/* */
/* ReleaseComplete_UUIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ReleaseComplete_UUIE (OOCTXT* pctxt, H225ReleaseComplete_UUIE* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.busyAddressPresent ||
pvalue->m.presentationIndicatorPresent ||
pvalue->m.screeningIndicatorPresent ||
pvalue->m.capacityPresent ||
pvalue->m.serviceControlPresent ||
pvalue->m.featureSetPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.reasonPresent);
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode reason */
if (pvalue->m.reasonPresent) {
stat = asn1PE_H225ReleaseCompleteReason (pctxt, &pvalue->reason);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 8);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.busyAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.presentationIndicatorPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.screeningIndicatorPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
/* encode extension elements */
if (pvalue->m.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.busyAddressPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->busyAddress);
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.presentationIndicatorPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225PresentationIndicator (&lctxt, &pvalue->presentationIndicator);
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.screeningIndicatorPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ScreeningIndicator (&lctxt, pvalue->screeningIndicator);
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.capacityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
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.serviceControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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);
}
/**************************************************************/
/* */
/* FacilityReason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225FacilityReason (OOCTXT* pctxt, H225FacilityReason* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
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)
{
/* routeCallToGatekeeper */
case 1:
/* NULL */
break;
/* callForwarded */
case 2:
/* NULL */
break;
/* routeCallToMC */
case 3:
/* NULL */
break;
/* undefinedReason */
case 4:
/* NULL */
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 */
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
switch (pvalue->t)
{
/* conferenceListChoice */
case 5:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* startH245 */
case 6:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* noH245 */
case 7:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* newTokens */
case 8:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* featureSetUpdate */
case 9:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* forwardedElements */
case 10:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* transportedInformation */
case 11:
/* NULL */
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);
}
/**************************************************************/
/* */
/* ConferenceList */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ConferenceList (OOCTXT* pctxt, H225ConferenceList* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.conferenceIDPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.conferenceAliasPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode conferenceID */
if (pvalue->m.conferenceIDPresent) {
stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
if (stat != ASN_OK) return stat;
}
/* encode conferenceAlias */
if (pvalue->m.conferenceAliasPresent) {
stat = asn1PE_H225AliasAddress (pctxt, &pvalue->conferenceAlias);
if (stat != ASN_OK) return stat;
}
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225ConferenceList */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225ConferenceList (OOCTXT* pctxt, H225_SeqOfH225ConferenceList* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225ConferenceList (pctxt, ((H225ConferenceList*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* Facility_UUIE_fastStart */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Facility_UUIE_fastStart (OOCTXT* pctxt, H225Facility_UUIE_fastStart* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* Facility_UUIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Facility_UUIE (OOCTXT* pctxt, H225Facility_UUIE* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
pvalue->m.destExtraCallInfoPresent ||
pvalue->m.remoteExtensionAddressPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.conferencesPresent ||
pvalue->m.h245AddressPresent ||
pvalue->m.fastStartPresent ||
pvalue->m.multipleCallsPresent ||
pvalue->m.maintainConnectionPresent ||
pvalue->m.fastConnectRefusedPresent ||
pvalue->m.serviceControlPresent ||
pvalue->m.circuitInfoPresent ||
pvalue->m.featureSetPresent ||
pvalue->m.destinationInfoPresent ||
pvalue->m.h245SecurityModePresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternativeAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternativeAliasAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.conferenceIDPresent);
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode alternativeAddress */
if (pvalue->m.alternativeAddressPresent) {
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->alternativeAddress);
if (stat != ASN_OK) return stat;
}
/* encode alternativeAliasAddress */
if (pvalue->m.alternativeAliasAddressPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->alternativeAliasAddress);
if (stat != ASN_OK) return stat;
}
/* encode conferenceID */
if (pvalue->m.conferenceIDPresent) {
stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
if (stat != ASN_OK) return stat;
}
/* encode reason */
stat = asn1PE_H225FacilityReason (pctxt, &pvalue->reason);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 15);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCallInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.remoteExtensionAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.conferencesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245AddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastConnectRefusedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245SecurityModePresent);
/* encode extension elements */
if (pvalue->m.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.destExtraCallInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->destExtraCallInfo);
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.remoteExtensionAddressPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AliasAddress (&lctxt, &pvalue->remoteExtensionAddress);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.conferencesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ConferenceList (&lctxt, &pvalue->conferences);
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.h245AddressPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225TransportAddress (&lctxt, &pvalue->h245Address);
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.fastStartPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225Facility_UUIE_fastStart (&lctxt, &pvalue->fastStart);
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.multipleCallsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
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.maintainConnectionPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
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.fastConnectRefusedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.serviceControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
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.circuitInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.destinationInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225EndpointType (&lctxt, &pvalue->destinationInfo);
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.h245SecurityModePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225H245Security (&lctxt, &pvalue->h245SecurityMode);
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);
}
/**************************************************************/
/* */
/* Progress_UUIE_fastStart */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Progress_UUIE_fastStart (OOCTXT* pctxt, H225Progress_UUIE_fastStart* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* Progress_UUIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Progress_UUIE (OOCTXT* pctxt, H225Progress_UUIE* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.multipleCallsPresent ||
pvalue->m.maintainConnectionPresent ||
pvalue->m.fastConnectRefusedPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245AddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245SecurityModePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastStartPresent);
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode destinationInfo */
stat = asn1PE_H225EndpointType (pctxt, &pvalue->destinationInfo);
if (stat != ASN_OK) return stat;
/* encode h245Address */
if (pvalue->m.h245AddressPresent) {
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->h245Address);
if (stat != ASN_OK) return stat;
}
/* encode callIdentifier */
stat = asn1PE_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
if (stat != ASN_OK) return stat;
/* encode h245SecurityMode */
if (pvalue->m.h245SecurityModePresent) {
stat = asn1PE_H225H245Security (pctxt, &pvalue->h245SecurityMode);
if (stat != ASN_OK) return stat;
}
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
/* encode fastStart */
if (pvalue->m.fastStartPresent) {
stat = asn1PE_H225Progress_UUIE_fastStart (pctxt, &pvalue->fastStart);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 2);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.fastConnectRefusedPresent);
/* encode extension elements */
if (pvalue->m.multipleCallsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
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.maintainConnectionPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
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.fastConnectRefusedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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);
}
/**************************************************************/
/* */
/* Status_UUIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Status_UUIE (OOCTXT* pctxt, H225Status_UUIE* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode callIdentifier */
stat = asn1PE_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
if (stat != ASN_OK) return stat;
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* StatusInquiry_UUIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225StatusInquiry_UUIE (OOCTXT* pctxt, H225StatusInquiry_UUIE* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode callIdentifier */
stat = asn1PE_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
if (stat != ASN_OK) return stat;
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* SetupAcknowledge_UUIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225SetupAcknowledge_UUIE (OOCTXT* pctxt, H225SetupAcknowledge_UUIE* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode callIdentifier */
stat = asn1PE_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
if (stat != ASN_OK) return stat;
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* Notify_UUIE */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Notify_UUIE (OOCTXT* pctxt, H225Notify_UUIE* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode callIdentifier */
stat = asn1PE_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
if (stat != ASN_OK) return stat;
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* H323_UU_PDU_h323_message_body */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H323_UU_PDU_h323_message_body (OOCTXT* pctxt, H225H323_UU_PDU_h323_message_body* 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)
{
/* setup */
case 1:
stat = asn1PE_H225Setup_UUIE (pctxt, pvalue->u.setup);
if (stat != ASN_OK) return stat;
break;
/* callProceeding */
case 2:
stat = asn1PE_H225CallProceeding_UUIE (pctxt, pvalue->u.callProceeding);
if (stat != ASN_OK) return stat;
break;
/* connect */
case 3:
stat = asn1PE_H225Connect_UUIE (pctxt, pvalue->u.connect);
if (stat != ASN_OK) return stat;
break;
/* alerting */
case 4:
stat = asn1PE_H225Alerting_UUIE (pctxt, pvalue->u.alerting);
if (stat != ASN_OK) return stat;
break;
/* information */
case 5:
stat = asn1PE_H225Information_UUIE (pctxt, pvalue->u.information);
if (stat != ASN_OK) return stat;
break;
/* releaseComplete */
case 6:
stat = asn1PE_H225ReleaseComplete_UUIE (pctxt, pvalue->u.releaseComplete);
if (stat != ASN_OK) return stat;
break;
/* facility */
case 7:
stat = asn1PE_H225Facility_UUIE (pctxt, pvalue->u.facility);
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)
{
/* progress */
case 8:
stat = asn1PE_H225Progress_UUIE (&lctxt, pvalue->u.progress);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* empty */
case 9:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* status */
case 10:
stat = asn1PE_H225Status_UUIE (&lctxt, pvalue->u.status);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* statusInquiry */
case 11:
stat = asn1PE_H225StatusInquiry_UUIE (&lctxt, pvalue->u.statusInquiry);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* setupAcknowledge */
case 12:
stat = asn1PE_H225SetupAcknowledge_UUIE (&lctxt, pvalue->u.setupAcknowledge);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* notify */
case 13:
stat = asn1PE_H225Notify_UUIE (&lctxt, pvalue->u.notify);
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);
}
/**************************************************************/
/* */
/* H323_UU_PDU_h4501SupplementaryService */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H323_UU_PDU_h4501SupplementaryService (OOCTXT* pctxt, H225H323_UU_PDU_h4501SupplementaryService* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* H323_UU_PDU_h245Control */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H323_UU_PDU_h245Control (OOCTXT* pctxt, H225H323_UU_PDU_h245Control* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225NonStandardParameter */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225NonStandardParameter (OOCTXT* pctxt, H225_SeqOfH225NonStandardParameter* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225NonStandardParameter (pctxt, ((H225NonStandardParameter*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* CallLinkage */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallLinkage (OOCTXT* pctxt, H225CallLinkage* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.globalCallIdPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.threadIdPresent);
/* encode globalCallId */
if (pvalue->m.globalCallIdPresent) {
stat = asn1PE_H225GloballyUniqueID (pctxt, &pvalue->globalCallId);
if (stat != ASN_OK) return stat;
}
/* encode threadId */
if (pvalue->m.threadIdPresent) {
stat = asn1PE_H225GloballyUniqueID (pctxt, &pvalue->threadId);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* H323_UU_PDU_tunnelledSignallingMessage_messageContent */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage_messageContent (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage_messageContent* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeOctetString (pctxt, pvalue->elem[xx1].numocts, pvalue->elem[xx1].data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* H323_UU_PDU_tunnelledSignallingMessage */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tunnellingRequiredPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode tunnelledProtocolID */
stat = asn1PE_H225TunnelledProtocol (pctxt, &pvalue->tunnelledProtocolID);
if (stat != ASN_OK) return stat;
/* encode messageContent */
stat = asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage_messageContent (pctxt, &pvalue->messageContent);
if (stat != ASN_OK) return stat;
/* encode tunnellingRequired */
if (pvalue->m.tunnellingRequiredPresent) {
/* NULL */
}
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* StimulusControl */
/* */
/**************************************************************/
EXTERN int asn1PE_H225StimulusControl (OOCTXT* pctxt, H225StimulusControl* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.isTextPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h248MessagePresent);
/* encode nonStandard */
if (pvalue->m.nonStandardPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandard);
if (stat != ASN_OK) return stat;
}
/* encode isText */
if (pvalue->m.isTextPresent) {
/* NULL */
}
/* encode h248Message */
if (pvalue->m.h248MessagePresent) {
stat = encodeOctetString (pctxt, pvalue->h248Message.numocts, pvalue->h248Message.data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* H323_UU_PDU */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H323_UU_PDU (OOCTXT* pctxt, H225H323_UU_PDU* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.h4501SupplementaryServicePresent ||
pvalue->m.h245TunnelingPresent ||
pvalue->m.h245ControlPresent ||
pvalue->m.nonStandardControlPresent ||
pvalue->m.callLinkagePresent ||
pvalue->m.tunnelledSignallingMessagePresent ||
pvalue->m.provisionalRespToH245TunnelingPresent ||
pvalue->m.stimulusControlPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode h323_message_body */
stat = asn1PE_H225H323_UU_PDU_h323_message_body (pctxt, &pvalue->h323_message_body);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 8);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h4501SupplementaryServicePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245TunnelingPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.h245ControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callLinkagePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tunnelledSignallingMessagePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.provisionalRespToH245TunnelingPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.stimulusControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.h4501SupplementaryServicePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225H323_UU_PDU_h4501SupplementaryService (&lctxt, &pvalue->h4501SupplementaryService);
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.h245TunnelingPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->h245Tunneling);
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.h245ControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225H323_UU_PDU_h245Control (&lctxt, &pvalue->h245Control);
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.nonStandardControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225NonStandardParameter (&lctxt, &pvalue->nonStandardControl);
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.callLinkagePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallLinkage (&lctxt, &pvalue->callLinkage);
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.tunnelledSignallingMessagePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage (&lctxt, &pvalue->tunnelledSignallingMessage);
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.provisionalRespToH245TunnelingPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.stimulusControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225StimulusControl (&lctxt, &pvalue->stimulusControl);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* H323_UserInformation_user_data */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H323_UserInformation_user_data (OOCTXT* pctxt, H225H323_UserInformation_user_data* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode protocol_discriminator */
stat = encodeConsUnsigned (pctxt, pvalue->protocol_discriminator, 0U, 255U);
if (stat != ASN_OK) return stat;
/* encode user_information */
stat = asn1PE_H225H323_UserInformation_user_data_user_information (pctxt, &pvalue->user_information);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* H323_UserInformation */
/* */
/**************************************************************/
EXTERN int asn1PE_H225H323_UserInformation (OOCTXT* pctxt, H225H323_UserInformation* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.user_dataPresent);
/* encode h323_uu_pdu */
stat = asn1PE_H225H323_UU_PDU (pctxt, &pvalue->h323_uu_pdu);
if (stat != ASN_OK) return stat;
/* encode user_data */
if (pvalue->m.user_dataPresent) {
stat = asn1PE_H225H323_UserInformation_user_data (pctxt, &pvalue->user_data);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* AddressPattern_range */
/* */
/**************************************************************/
EXTERN int asn1PE_H225AddressPattern_range (OOCTXT* pctxt, H225AddressPattern_range* pvalue)
{
int stat = ASN_OK;
/* encode startOfRange */
stat = asn1PE_H225PartyNumber (pctxt, &pvalue->startOfRange);
if (stat != ASN_OK) return stat;
/* encode endOfRange */
stat = asn1PE_H225PartyNumber (pctxt, &pvalue->endOfRange);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* AddressPattern */
/* */
/**************************************************************/
EXTERN int asn1PE_H225AddressPattern (OOCTXT* pctxt, H225AddressPattern* 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)
{
/* wildcard */
case 1:
stat = asn1PE_H225AliasAddress (pctxt, pvalue->u.wildcard);
if (stat != ASN_OK) return stat;
break;
/* range */
case 2:
stat = asn1PE_H225AddressPattern_range (pctxt, pvalue->u.range);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225TransportAddress */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225TransportAddress (OOCTXT* pctxt, H225_SeqOfH225TransportAddress* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225TransportAddress (pctxt, ((H225TransportAddress*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* AlternateTransportAddresses */
/* */
/**************************************************************/
EXTERN int asn1PE_H225AlternateTransportAddresses (OOCTXT* pctxt, H225AlternateTransportAddresses* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.sctpPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.annexEPresent);
/* encode annexE */
if (pvalue->m.annexEPresent) {
stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->annexE);
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.sctpPresent);
/* encode extension elements */
if (pvalue->m.sctpPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225TransportAddress (&lctxt, &pvalue->sctp);
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);
}
/**************************************************************/
/* */
/* Endpoint */
/* */
/**************************************************************/
EXTERN int asn1PE_H225Endpoint (OOCTXT* pctxt, H225Endpoint* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.alternateTransportAddressesPresent ||
pvalue->m.circuitInfoPresent ||
pvalue->m.featureSetPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.aliasAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callSignalAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.rasAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointTypePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.priorityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.remoteExtensionAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCallInfoPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode aliasAddress */
if (pvalue->m.aliasAddressPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->aliasAddress);
if (stat != ASN_OK) return stat;
}
/* encode callSignalAddress */
if (pvalue->m.callSignalAddressPresent) {
stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
if (stat != ASN_OK) return stat;
}
/* encode rasAddress */
if (pvalue->m.rasAddressPresent) {
stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->rasAddress);
if (stat != ASN_OK) return stat;
}
/* encode endpointType */
if (pvalue->m.endpointTypePresent) {
stat = asn1PE_H225EndpointType (pctxt, &pvalue->endpointType);
if (stat != ASN_OK) return stat;
}
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
/* encode priority */
if (pvalue->m.priorityPresent) {
stat = encodeConsUnsigned (pctxt, pvalue->priority, 0U, 127U);
if (stat != ASN_OK) return stat;
}
/* encode remoteExtensionAddress */
if (pvalue->m.remoteExtensionAddressPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->remoteExtensionAddress);
if (stat != ASN_OK) return stat;
}
/* encode destExtraCallInfo */
if (pvalue->m.destExtraCallInfoPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destExtraCallInfo);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 2);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateTransportAddressesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
/* encode extension elements */
if (pvalue->m.alternateTransportAddressesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AlternateTransportAddresses (&lctxt, &pvalue->alternateTransportAddresses);
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.circuitInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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);
}
/**************************************************************/
/* */
/* UseSpecifiedTransport */
/* */
/**************************************************************/
EXTERN int asn1PE_H225UseSpecifiedTransport (OOCTXT* pctxt, H225UseSpecifiedTransport* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
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)
{
/* tcp */
case 1:
/* NULL */
break;
/* annexE */
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 */
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
switch (pvalue->t)
{
/* sctp */
case 3:
/* NULL */
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);
}
/**************************************************************/
/* */
/* AlternateGK */
/* */
/**************************************************************/
EXTERN int asn1PE_H225AlternateGK (OOCTXT* pctxt, H225AlternateGK* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
/* encode rasAddress */
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->rasAddress);
if (stat != ASN_OK) return stat;
/* encode gatekeeperIdentifier */
if (pvalue->m.gatekeeperIdentifierPresent) {
stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
if (stat != ASN_OK) return stat;
}
/* encode needToRegister */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->needToRegister);
if (stat != ASN_OK) return stat;
/* encode priority */
stat = encodeConsUnsigned (pctxt, pvalue->priority, 0U, 127U);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225AlternateGK */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225AlternateGK (OOCTXT* pctxt, H225_SeqOfH225AlternateGK* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225AlternateGK (pctxt, ((H225AlternateGK*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* AltGKInfo */
/* */
/**************************************************************/
EXTERN int asn1PE_H225AltGKInfo (OOCTXT* pctxt, H225AltGKInfo* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode alternateGatekeeper */
stat = asn1PE_H225_SeqOfH225AlternateGK (pctxt, &pvalue->alternateGatekeeper);
if (stat != ASN_OK) return stat;
/* encode altGKisPermanent */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->altGKisPermanent);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* SecurityErrors2 */
/* */
/**************************************************************/
EXTERN int asn1PE_H225SecurityErrors2 (OOCTXT* pctxt, H225SecurityErrors2* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 6);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* securityWrongSyncTime */
case 1:
/* NULL */
break;
/* securityReplay */
case 2:
/* NULL */
break;
/* securityWrongGeneralID */
case 3:
/* NULL */
break;
/* securityWrongSendersID */
case 4:
/* NULL */
break;
/* securityIntegrityFailed */
case 5:
/* NULL */
break;
/* securityWrongOID */
case 6:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* EncryptIntAlg */
/* */
/**************************************************************/
EXTERN int asn1PE_H225EncryptIntAlg (OOCTXT* pctxt, H225EncryptIntAlg* 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)
{
/* nonStandard */
case 1:
stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
if (stat != ASN_OK) return stat;
break;
/* isoAlgorithm */
case 2:
stat = encodeObjectIdentifier (pctxt, pvalue->u.isoAlgorithm);
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);
}
/**************************************************************/
/* */
/* NonIsoIntegrityMechanism */
/* */
/**************************************************************/
EXTERN int asn1PE_H225NonIsoIntegrityMechanism (OOCTXT* pctxt, H225NonIsoIntegrityMechanism* 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)
{
/* hMAC_MD5 */
case 1:
/* NULL */
break;
/* hMAC_iso10118_2_s */
case 2:
stat = asn1PE_H225EncryptIntAlg (pctxt, pvalue->u.hMAC_iso10118_2_s);
if (stat != ASN_OK) return stat;
break;
/* hMAC_iso10118_2_l */
case 3:
stat = asn1PE_H225EncryptIntAlg (pctxt, pvalue->u.hMAC_iso10118_2_l);
if (stat != ASN_OK) return stat;
break;
/* hMAC_iso10118_3 */
case 4:
stat = encodeObjectIdentifier (pctxt, pvalue->u.hMAC_iso10118_3);
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);
}
/**************************************************************/
/* */
/* IntegrityMechanism */
/* */
/**************************************************************/
EXTERN int asn1PE_H225IntegrityMechanism (OOCTXT* pctxt, H225IntegrityMechanism* 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)
{
/* nonStandard */
case 1:
stat = asn1PE_H225NonStandardParameter (pctxt, pvalue->u.nonStandard);
if (stat != ASN_OK) return stat;
break;
/* digSig */
case 2:
/* NULL */
break;
/* iso9797 */
case 3:
stat = encodeObjectIdentifier (pctxt, pvalue->u.iso9797);
if (stat != ASN_OK) return stat;
break;
/* nonIsoIM */
case 4:
stat = asn1PE_H225NonIsoIntegrityMechanism (pctxt, pvalue->u.nonIsoIM);
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);
}
/**************************************************************/
/* */
/* ICV */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ICV (OOCTXT* pctxt, H225ICV* pvalue)
{
int stat = ASN_OK;
/* encode algorithmOID */
stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
if (stat != ASN_OK) return stat;
/* encode icv */
stat = encodeBitString (pctxt, pvalue->icv.numbits, pvalue->icv.data);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* CapacityReportingCapability */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CapacityReportingCapability (OOCTXT* pctxt, H225CapacityReportingCapability* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode canReportCallCapacity */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->canReportCallCapacity);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* CapacityReportingSpecification_when */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CapacityReportingSpecification_when (OOCTXT* pctxt, H225CapacityReportingSpecification_when* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callStartPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callEndPresent);
/* encode callStart */
if (pvalue->m.callStartPresent) {
/* NULL */
}
/* encode callEnd */
if (pvalue->m.callEndPresent) {
/* NULL */
}
return (stat);
}
/**************************************************************/
/* */
/* CapacityReportingSpecification */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CapacityReportingSpecification (OOCTXT* pctxt, H225CapacityReportingSpecification* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode when */
stat = asn1PE_H225CapacityReportingSpecification_when (pctxt, &pvalue->when);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* RasUsageInfoTypes */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RasUsageInfoTypes (OOCTXT* pctxt, H225RasUsageInfoTypes* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.startTimePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endTimePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminationCausePresent);
/* encode nonStandardUsageTypes */
stat = asn1PE_H225_SeqOfH225NonStandardParameter (pctxt, &pvalue->nonStandardUsageTypes);
if (stat != ASN_OK) return stat;
/* encode startTime */
if (pvalue->m.startTimePresent) {
/* NULL */
}
/* encode endTime */
if (pvalue->m.endTimePresent) {
/* NULL */
}
/* encode terminationCause */
if (pvalue->m.terminationCausePresent) {
/* NULL */
}
return (stat);
}
/**************************************************************/
/* */
/* RasUsageSpecification_when */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RasUsageSpecification_when (OOCTXT* pctxt, H225RasUsageSpecification_when* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.startPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.inIrrPresent);
/* encode start */
if (pvalue->m.startPresent) {
/* NULL */
}
/* encode end */
if (pvalue->m.endPresent) {
/* NULL */
}
/* encode inIrr */
if (pvalue->m.inIrrPresent) {
/* NULL */
}
return (stat);
}
/**************************************************************/
/* */
/* RasUsageSpecification_callStartingPoint */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RasUsageSpecification_callStartingPoint (OOCTXT* pctxt, H225RasUsageSpecification_callStartingPoint* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alertingPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.connectPresent);
/* encode alerting */
if (pvalue->m.alertingPresent) {
/* NULL */
}
/* encode connect */
if (pvalue->m.connectPresent) {
/* NULL */
}
return (stat);
}
/**************************************************************/
/* */
/* RasUsageSpecification */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RasUsageSpecification (OOCTXT* pctxt, H225RasUsageSpecification* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callStartingPointPresent);
/* encode when */
stat = asn1PE_H225RasUsageSpecification_when (pctxt, &pvalue->when);
if (stat != ASN_OK) return stat;
/* encode callStartingPoint */
if (pvalue->m.callStartingPointPresent) {
stat = asn1PE_H225RasUsageSpecification_callStartingPoint (pctxt, &pvalue->callStartingPoint);
if (stat != ASN_OK) return stat;
}
/* encode required */
stat = asn1PE_H225RasUsageInfoTypes (pctxt, &pvalue->required);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* RasUsageInformation */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RasUsageInformation (OOCTXT* pctxt, H225RasUsageInformation* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alertingTimePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.connectTimePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endTimePresent);
/* encode nonStandardUsageFields */
stat = asn1PE_H225_SeqOfH225NonStandardParameter (pctxt, &pvalue->nonStandardUsageFields);
if (stat != ASN_OK) return stat;
/* encode alertingTime */
if (pvalue->m.alertingTimePresent) {
stat = asn1PE_H235TimeStamp (pctxt, pvalue->alertingTime);
if (stat != ASN_OK) return stat;
}
/* encode connectTime */
if (pvalue->m.connectTimePresent) {
stat = asn1PE_H235TimeStamp (pctxt, pvalue->connectTime);
if (stat != ASN_OK) return stat;
}
/* encode endTime */
if (pvalue->m.endTimePresent) {
stat = asn1PE_H235TimeStamp (pctxt, pvalue->endTime);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* CallTerminationCause */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallTerminationCause (OOCTXT* pctxt, H225CallTerminationCause* 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)
{
/* releaseCompleteReason */
case 1:
stat = asn1PE_H225ReleaseCompleteReason (pctxt, pvalue->u.releaseCompleteReason);
if (stat != ASN_OK) return stat;
break;
/* releaseCompleteCauseIE */
case 2:
stat = asn1PE_H225CallTerminationCause_releaseCompleteCauseIE (pctxt, pvalue->u.releaseCompleteCauseIE);
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);
}
/**************************************************************/
/* */
/* TransportChannelInfo */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportChannelInfo (OOCTXT* pctxt, H225TransportChannelInfo* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.sendAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.recvAddressPresent);
/* encode sendAddress */
if (pvalue->m.sendAddressPresent) {
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->sendAddress);
if (stat != ASN_OK) return stat;
}
/* encode recvAddress */
if (pvalue->m.recvAddressPresent) {
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->recvAddress);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* BandwidthDetails */
/* */
/**************************************************************/
EXTERN int asn1PE_H225BandwidthDetails (OOCTXT* pctxt, H225BandwidthDetails* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode sender */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->sender);
if (stat != ASN_OK) return stat;
/* encode multicast */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->multicast);
if (stat != ASN_OK) return stat;
/* encode bandwidth */
stat = asn1PE_H225BandWidth (pctxt, pvalue->bandwidth);
if (stat != ASN_OK) return stat;
/* encode rtcpAddresses */
stat = asn1PE_H225TransportChannelInfo (pctxt, &pvalue->rtcpAddresses);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* CallCreditCapability */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallCreditCapability (OOCTXT* pctxt, H225CallCreditCapability* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.canDisplayAmountStringPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.canEnforceDurationLimitPresent);
/* encode canDisplayAmountString */
if (pvalue->m.canDisplayAmountStringPresent) {
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->canDisplayAmountString);
if (stat != ASN_OK) return stat;
}
/* encode canEnforceDurationLimit */
if (pvalue->m.canEnforceDurationLimitPresent) {
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->canEnforceDurationLimit);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* RTPSession_associatedSessionIds */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RTPSession_associatedSessionIds (OOCTXT* pctxt, H225RTPSession_associatedSessionIds* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeConsUnsigned (pctxt, pvalue->elem[xx1], 1U, 255U);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* RTPSession */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RTPSession (OOCTXT* pctxt, H225RTPSession* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.multicastPresent ||
pvalue->m.bandwidthPresent);
encodeBit (pctxt, extbit);
/* encode rtpAddress */
stat = asn1PE_H225TransportChannelInfo (pctxt, &pvalue->rtpAddress);
if (stat != ASN_OK) return stat;
/* encode rtcpAddress */
stat = asn1PE_H225TransportChannelInfo (pctxt, &pvalue->rtcpAddress);
if (stat != ASN_OK) return stat;
/* encode cname */
stat = encodeConstrainedStringEx (pctxt, pvalue->cname, 0, 8, 7, 7);
if (stat != ASN_OK) return stat;
/* encode ssrc */
stat = encodeConsUnsigned (pctxt, pvalue->ssrc, 1U, ASN1UINT_MAX);
if (stat != ASN_OK) return stat;
/* encode sessionId */
stat = encodeConsUnsigned (pctxt, pvalue->sessionId, 1U, 255U);
if (stat != ASN_OK) return stat;
/* encode associatedSessionIds */
stat = asn1PE_H225RTPSession_associatedSessionIds (pctxt, &pvalue->associatedSessionIds);
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.multicastPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.bandwidthPresent);
/* encode extension elements */
if (pvalue->m.multicastPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.bandwidthPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225BandWidth (&lctxt, pvalue->bandwidth);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225Endpoint */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225Endpoint (OOCTXT* pctxt, H225_SeqOfH225Endpoint* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225Endpoint (pctxt, ((H225Endpoint*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225AuthenticationMechanism */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225AuthenticationMechanism (OOCTXT* pctxt, H225_SeqOfH225AuthenticationMechanism* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H235AuthenticationMechanism (pctxt, ((H235AuthenticationMechanism*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* GatekeeperRequest_algorithmOIDs */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GatekeeperRequest_algorithmOIDs (OOCTXT* pctxt, H225GatekeeperRequest_algorithmOIDs* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = encodeObjectIdentifier (pctxt, &pvalue->elem[xx1]);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225IntegrityMechanism */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225IntegrityMechanism (OOCTXT* pctxt, H225_SeqOfH225IntegrityMechanism* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225IntegrityMechanism (pctxt, ((H225IntegrityMechanism*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* GatekeeperRequest */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GatekeeperRequest (OOCTXT* pctxt, H225GatekeeperRequest* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.alternateEndpointsPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.authenticationCapabilityPresent ||
pvalue->m.algorithmOIDsPresent ||
pvalue->m.integrityPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.supportsAltGKPresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callServicesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointAliasPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode rasAddress */
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->rasAddress);
if (stat != ASN_OK) return stat;
/* encode endpointType */
stat = asn1PE_H225EndpointType (pctxt, &pvalue->endpointType);
if (stat != ASN_OK) return stat;
/* encode gatekeeperIdentifier */
if (pvalue->m.gatekeeperIdentifierPresent) {
stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
if (stat != ASN_OK) return stat;
}
/* encode callServices */
if (pvalue->m.callServicesPresent) {
stat = asn1PE_H225QseriesOptions (pctxt, &pvalue->callServices);
if (stat != ASN_OK) return stat;
}
/* encode endpointAlias */
if (pvalue->m.endpointAliasPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->endpointAlias);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 9);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateEndpointsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.authenticationCapabilityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.algorithmOIDsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportsAltGKPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.alternateEndpointsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->alternateEndpoints);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.authenticationCapabilityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AuthenticationMechanism (&lctxt, &pvalue->authenticationCapability);
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.algorithmOIDsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225GatekeeperRequest_algorithmOIDs (&lctxt, &pvalue->algorithmOIDs);
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.integrityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225IntegrityMechanism (&lctxt, &pvalue->integrity);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.supportsAltGKPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* GatekeeperConfirm */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GatekeeperConfirm (OOCTXT* pctxt, H225GatekeeperConfirm* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.alternateGatekeeperPresent ||
pvalue->m.authenticationModePresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.algorithmOIDPresent ||
pvalue->m.integrityPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode gatekeeperIdentifier */
if (pvalue->m.gatekeeperIdentifierPresent) {
stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
if (stat != ASN_OK) return stat;
}
/* encode rasAddress */
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->rasAddress);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 8);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateGatekeeperPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.authenticationModePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.algorithmOIDPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.alternateGatekeeperPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AlternateGK (&lctxt, &pvalue->alternateGatekeeper);
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.authenticationModePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H235AuthenticationMechanism (&lctxt, &pvalue->authenticationMode);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.algorithmOIDPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeObjectIdentifier (&lctxt, &pvalue->algorithmOID);
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.integrityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225IntegrityMechanism (&lctxt, &pvalue->integrity);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* GatekeeperRejectReason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GatekeeperRejectReason (OOCTXT* pctxt, H225GatekeeperRejectReason* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
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)
{
/* resourceUnavailable */
case 1:
/* NULL */
break;
/* terminalExcluded */
case 2:
/* NULL */
break;
/* invalidRevision */
case 3:
/* NULL */
break;
/* undefinedReason */
case 4:
/* NULL */
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 */
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
switch (pvalue->t)
{
/* securityDenial */
case 5:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* genericDataReason */
case 6:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* neededFeatureNotSupported */
case 7:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityError */
case 8:
stat = asn1PE_H225SecurityErrors (&lctxt, pvalue->u.securityError);
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);
}
/**************************************************************/
/* */
/* GatekeeperReject */
/* */
/**************************************************************/
EXTERN int asn1PE_H225GatekeeperReject (OOCTXT* pctxt, H225GatekeeperReject* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode gatekeeperIdentifier */
if (pvalue->m.gatekeeperIdentifierPresent) {
stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
if (stat != ASN_OK) return stat;
}
/* encode rejectReason */
stat = asn1PE_H225GatekeeperRejectReason (pctxt, &pvalue->rejectReason);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 5);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.altGKInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225AddressPattern */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225AddressPattern (OOCTXT* pctxt, H225_SeqOfH225AddressPattern* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225AddressPattern (pctxt, ((H225AddressPattern*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225H248PackagesDescriptor */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225H248PackagesDescriptor (OOCTXT* pctxt, H225_SeqOfH225H248PackagesDescriptor* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = asn1PE_H225H248PackagesDescriptor (pctxt, pvalue->elem[xx1]);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* RegistrationRequest */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RegistrationRequest (OOCTXT* pctxt, H225RegistrationRequest* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.alternateEndpointsPresent ||
pvalue->m.timeToLivePresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.keepAlivePresent ||
pvalue->m.endpointIdentifierPresent ||
pvalue->m.willSupplyUUIEsPresent ||
pvalue->m.maintainConnectionPresent ||
pvalue->m.alternateTransportAddressesPresent ||
pvalue->m.additiveRegistrationPresent ||
pvalue->m.terminalAliasPatternPresent ||
pvalue->m.supportsAltGKPresent ||
pvalue->m.usageReportingCapabilityPresent ||
pvalue->m.multipleCallsPresent ||
pvalue->m.supportedH248PackagesPresent ||
pvalue->m.callCreditCapabilityPresent ||
pvalue->m.capacityReportingCapabilityPresent ||
pvalue->m.capacityPresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent ||
pvalue->m.restartPresent ||
pvalue->m.supportsACFSequencesPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalAliasPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode discoveryComplete */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->discoveryComplete);
if (stat != ASN_OK) return stat;
/* encode callSignalAddress */
stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
if (stat != ASN_OK) return stat;
/* encode rasAddress */
stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->rasAddress);
if (stat != ASN_OK) return stat;
/* encode terminalType */
stat = asn1PE_H225EndpointType (pctxt, &pvalue->terminalType);
if (stat != ASN_OK) return stat;
/* encode terminalAlias */
if (pvalue->m.terminalAliasPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->terminalAlias);
if (stat != ASN_OK) return stat;
}
/* encode gatekeeperIdentifier */
if (pvalue->m.gatekeeperIdentifierPresent) {
stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
if (stat != ASN_OK) return stat;
}
/* encode endpointVendor */
stat = asn1PE_H225VendorIdentifier (pctxt, &pvalue->endpointVendor);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 22);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateEndpointsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.timeToLivePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.keepAlivePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.willSupplyUUIEsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateTransportAddressesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.additiveRegistrationPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalAliasPatternPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportsAltGKPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageReportingCapabilityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedH248PackagesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callCreditCapabilityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityReportingCapabilityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.restartPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportsACFSequencesPresent);
/* encode extension elements */
if (pvalue->m.alternateEndpointsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->alternateEndpoints);
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.timeToLivePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225TimeToLive (&lctxt, pvalue->timeToLive);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.keepAlivePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->keepAlive);
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.endpointIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225EndpointIdentifier (&lctxt, pvalue->endpointIdentifier);
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.willSupplyUUIEsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->willSupplyUUIEs);
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.maintainConnectionPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
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.alternateTransportAddressesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AlternateTransportAddresses (&lctxt, &pvalue->alternateTransportAddresses);
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.additiveRegistrationPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.terminalAliasPatternPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AddressPattern (&lctxt, &pvalue->terminalAliasPattern);
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.supportsAltGKPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.usageReportingCapabilityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225RasUsageInfoTypes (&lctxt, &pvalue->usageReportingCapability);
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.multipleCallsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
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.supportedH248PackagesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225H248PackagesDescriptor (&lctxt, &pvalue->supportedH248Packages);
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.callCreditCapabilityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCreditCapability (&lctxt, &pvalue->callCreditCapability);
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.capacityReportingCapabilityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CapacityReportingCapability (&lctxt, &pvalue->capacityReportingCapability);
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.capacityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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.restartPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.supportsACFSequencesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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);
}
/**************************************************************/
/* */
/* RegistrationConfirm_preGrantedARQ */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RegistrationConfirm_preGrantedARQ (OOCTXT* pctxt, H225RegistrationConfirm_preGrantedARQ* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.irrFrequencyInCallPresent ||
pvalue->m.totalBandwidthRestrictionPresent ||
pvalue->m.alternateTransportAddressesPresent ||
pvalue->m.useSpecifiedTransportPresent);
encodeBit (pctxt, extbit);
/* encode makeCall */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->makeCall);
if (stat != ASN_OK) return stat;
/* encode useGKCallSignalAddressToMakeCall */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->useGKCallSignalAddressToMakeCall);
if (stat != ASN_OK) return stat;
/* encode answerCall */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->answerCall);
if (stat != ASN_OK) return stat;
/* encode useGKCallSignalAddressToAnswer */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->useGKCallSignalAddressToAnswer);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 3);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.irrFrequencyInCallPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.totalBandwidthRestrictionPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateTransportAddressesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.useSpecifiedTransportPresent);
/* encode extension elements */
if (pvalue->m.irrFrequencyInCallPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeConsUnsigned (&lctxt, pvalue->irrFrequencyInCall, 1U, 65535U);
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.totalBandwidthRestrictionPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225BandWidth (&lctxt, pvalue->totalBandwidthRestriction);
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.alternateTransportAddressesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AlternateTransportAddresses (&lctxt, &pvalue->alternateTransportAddresses);
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.useSpecifiedTransportPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225UseSpecifiedTransport (&lctxt, &pvalue->useSpecifiedTransport);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225RasUsageSpecification */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225RasUsageSpecification (OOCTXT* pctxt, H225_SeqOfH225RasUsageSpecification* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225RasUsageSpecification (pctxt, ((H225RasUsageSpecification*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* RegistrationConfirm */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RegistrationConfirm (OOCTXT* pctxt, H225RegistrationConfirm* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.alternateGatekeeperPresent ||
pvalue->m.timeToLivePresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.willRespondToIRRPresent ||
pvalue->m.preGrantedARQPresent ||
pvalue->m.maintainConnectionPresent ||
pvalue->m.serviceControlPresent ||
pvalue->m.supportsAdditiveRegistrationPresent ||
pvalue->m.terminalAliasPatternPresent ||
pvalue->m.supportedPrefixesPresent ||
pvalue->m.usageSpecPresent ||
pvalue->m.featureServerAliasPresent ||
pvalue->m.capacityReportingSpecPresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalAliasPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode callSignalAddress */
stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
if (stat != ASN_OK) return stat;
/* encode terminalAlias */
if (pvalue->m.terminalAliasPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->terminalAlias);
if (stat != ASN_OK) return stat;
}
/* encode gatekeeperIdentifier */
if (pvalue->m.gatekeeperIdentifierPresent) {
stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
if (stat != ASN_OK) return stat;
}
/* encode endpointIdentifier */
stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 16);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateGatekeeperPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.timeToLivePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.willRespondToIRRPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.preGrantedARQPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.maintainConnectionPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportsAdditiveRegistrationPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalAliasPatternPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageSpecPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureServerAliasPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityReportingSpecPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.alternateGatekeeperPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AlternateGK (&lctxt, &pvalue->alternateGatekeeper);
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.timeToLivePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225TimeToLive (&lctxt, pvalue->timeToLive);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.willRespondToIRRPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->willRespondToIRR);
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.preGrantedARQPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225RegistrationConfirm_preGrantedARQ (&lctxt, &pvalue->preGrantedARQ);
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.maintainConnectionPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->maintainConnection);
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.serviceControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
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.supportsAdditiveRegistrationPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.terminalAliasPatternPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AddressPattern (&lctxt, &pvalue->terminalAliasPattern);
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.supportedPrefixesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
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.usageSpecPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225RasUsageSpecification (&lctxt, &pvalue->usageSpec);
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.featureServerAliasPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AliasAddress (&lctxt, &pvalue->featureServerAlias);
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.capacityReportingSpecPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CapacityReportingSpecification (&lctxt, &pvalue->capacityReportingSpec);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* RegistrationRejectReason_invalidTerminalAliases */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RegistrationRejectReason_invalidTerminalAliases (OOCTXT* pctxt, H225RegistrationRejectReason_invalidTerminalAliases* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalAliasPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminalAliasPatternPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
/* encode terminalAlias */
if (pvalue->m.terminalAliasPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->terminalAlias);
if (stat != ASN_OK) return stat;
}
/* encode terminalAliasPattern */
if (pvalue->m.terminalAliasPatternPresent) {
stat = asn1PE_H225_SeqOfH225AddressPattern (pctxt, &pvalue->terminalAliasPattern);
if (stat != ASN_OK) return stat;
}
/* encode supportedPrefixes */
if (pvalue->m.supportedPrefixesPresent) {
stat = asn1PE_H225_SeqOfH225SupportedPrefix (pctxt, &pvalue->supportedPrefixes);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* RegistrationRejectReason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RegistrationRejectReason (OOCTXT* pctxt, H225RegistrationRejectReason* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 8);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 7);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* discoveryRequired */
case 1:
/* NULL */
break;
/* invalidRevision */
case 2:
/* NULL */
break;
/* invalidCallSignalAddress */
case 3:
/* NULL */
break;
/* invalidRASAddress */
case 4:
/* NULL */
break;
/* duplicateAlias */
case 5:
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, pvalue->u.duplicateAlias);
if (stat != ASN_OK) return stat;
break;
/* invalidTerminalType */
case 6:
/* NULL */
break;
/* undefinedReason */
case 7:
/* NULL */
break;
/* transportNotSupported */
case 8:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 9);
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)
{
/* transportQOSNotSupported */
case 9:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* resourceUnavailable */
case 10:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* invalidAlias */
case 11:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityDenial */
case 12:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* fullRegistrationRequired */
case 13:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* additiveRegistrationNotSupported */
case 14:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* invalidTerminalAliases */
case 15:
stat = asn1PE_H225RegistrationRejectReason_invalidTerminalAliases (&lctxt, pvalue->u.invalidTerminalAliases);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* genericDataReason */
case 16:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* neededFeatureNotSupported */
case 17:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityError */
case 18:
stat = asn1PE_H225SecurityErrors (&lctxt, pvalue->u.securityError);
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);
}
/**************************************************************/
/* */
/* RegistrationReject */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RegistrationReject (OOCTXT* pctxt, H225RegistrationReject* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode rejectReason */
stat = asn1PE_H225RegistrationRejectReason (pctxt, &pvalue->rejectReason);
if (stat != ASN_OK) return stat;
/* encode gatekeeperIdentifier */
if (pvalue->m.gatekeeperIdentifierPresent) {
stat = asn1PE_H225GatekeeperIdentifier (pctxt, pvalue->gatekeeperIdentifier);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 5);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.altGKInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* UnregRequestReason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225UnregRequestReason (OOCTXT* pctxt, H225UnregRequestReason* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
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)
{
/* reregistrationRequired */
case 1:
/* NULL */
break;
/* ttlExpired */
case 2:
/* NULL */
break;
/* securityDenial */
case 3:
/* NULL */
break;
/* undefinedReason */
case 4:
/* NULL */
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 */
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
switch (pvalue->t)
{
/* maintenance */
case 5:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityError */
case 6:
stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityError);
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);
}
/**************************************************************/
/* */
/* UnregistrationRequest */
/* */
/**************************************************************/
EXTERN int asn1PE_H225UnregistrationRequest (OOCTXT* pctxt, H225UnregistrationRequest* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.alternateEndpointsPresent ||
pvalue->m.gatekeeperIdentifierPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.reasonPresent ||
pvalue->m.endpointAliasPatternPresent ||
pvalue->m.supportedPrefixesPresent ||
pvalue->m.alternateGatekeeperPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointAliasPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointIdentifierPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode callSignalAddress */
stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
if (stat != ASN_OK) return stat;
/* encode endpointAlias */
if (pvalue->m.endpointAliasPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->endpointAlias);
if (stat != ASN_OK) return stat;
}
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode endpointIdentifier */
if (pvalue->m.endpointIdentifierPresent) {
stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 9);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateEndpointsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.reasonPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointAliasPatternPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedPrefixesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateGatekeeperPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.alternateEndpointsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->alternateEndpoints);
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.gatekeeperIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225GatekeeperIdentifier (&lctxt, pvalue->gatekeeperIdentifier);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.reasonPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225UnregRequestReason (&lctxt, &pvalue->reason);
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.endpointAliasPatternPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AddressPattern (&lctxt, &pvalue->endpointAliasPattern);
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.supportedPrefixesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedPrefix (&lctxt, &pvalue->supportedPrefixes);
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.alternateGatekeeperPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AlternateGK (&lctxt, &pvalue->alternateGatekeeper);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* UnregistrationConfirm */
/* */
/**************************************************************/
EXTERN int asn1PE_H225UnregistrationConfirm (OOCTXT* pctxt, H225UnregistrationConfirm* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 3);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* UnregRejectReason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225UnregRejectReason (OOCTXT* pctxt, H225UnregRejectReason* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 3);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* notCurrentlyRegistered */
case 1:
/* NULL */
break;
/* callInProgress */
case 2:
/* NULL */
break;
/* undefinedReason */
case 3:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
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)
{
/* permissionDenied */
case 4:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityDenial */
case 5:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityError */
case 6:
stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityError);
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);
}
/**************************************************************/
/* */
/* UnregistrationReject */
/* */
/**************************************************************/
EXTERN int asn1PE_H225UnregistrationReject (OOCTXT* pctxt, H225UnregistrationReject* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode rejectReason */
stat = asn1PE_H225UnregRejectReason (pctxt, &pvalue->rejectReason);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 4);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.altGKInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* CallModel */
/* */
/**************************************************************/
EXTERN int asn1PE_H225CallModel (OOCTXT* pctxt, H225CallModel* 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)
{
/* direct */
case 1:
/* NULL */
break;
/* gatekeeperRouted */
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);
}
/**************************************************************/
/* */
/* TransportQOS */
/* */
/**************************************************************/
EXTERN int asn1PE_H225TransportQOS (OOCTXT* pctxt, H225TransportQOS* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 3);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* endpointControlled */
case 1:
/* NULL */
break;
/* gatekeeperControlled */
case 2:
/* NULL */
break;
/* noControl */
case 3:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* AdmissionRequest */
/* */
/**************************************************************/
EXTERN int asn1PE_H225AdmissionRequest (OOCTXT* pctxt, H225AdmissionRequest* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.canMapAliasPresent ||
pvalue->m.callIdentifierPresent ||
pvalue->m.srcAlternativesPresent ||
pvalue->m.destAlternativesPresent ||
pvalue->m.gatekeeperIdentifierPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.transportQOSPresent ||
pvalue->m.willSupplyUUIEsPresent ||
pvalue->m.callLinkagePresent ||
pvalue->m.gatewayDataRatePresent ||
pvalue->m.capacityPresent ||
pvalue->m.circuitInfoPresent ||
pvalue->m.desiredProtocolsPresent ||
pvalue->m.desiredTunnelledProtocolPresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent ||
pvalue->m.canMapSrcAliasPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callModelPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destCallSignalAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCallInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.srcCallSignalAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callServicesPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode callType */
stat = asn1PE_H225CallType (pctxt, &pvalue->callType);
if (stat != ASN_OK) return stat;
/* encode callModel */
if (pvalue->m.callModelPresent) {
stat = asn1PE_H225CallModel (pctxt, &pvalue->callModel);
if (stat != ASN_OK) return stat;
}
/* encode endpointIdentifier */
stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
if (stat != ASN_OK) return stat;
/* encode destinationInfo */
if (pvalue->m.destinationInfoPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destinationInfo);
if (stat != ASN_OK) return stat;
}
/* encode destCallSignalAddress */
if (pvalue->m.destCallSignalAddressPresent) {
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->destCallSignalAddress);
if (stat != ASN_OK) return stat;
}
/* encode destExtraCallInfo */
if (pvalue->m.destExtraCallInfoPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destExtraCallInfo);
if (stat != ASN_OK) return stat;
}
/* encode srcInfo */
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->srcInfo);
if (stat != ASN_OK) return stat;
/* encode srcCallSignalAddress */
if (pvalue->m.srcCallSignalAddressPresent) {
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->srcCallSignalAddress);
if (stat != ASN_OK) return stat;
}
/* encode bandWidth */
stat = asn1PE_H225BandWidth (pctxt, pvalue->bandWidth);
if (stat != ASN_OK) return stat;
/* encode callReferenceValue */
stat = asn1PE_H225CallReferenceValue (pctxt, pvalue->callReferenceValue);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode callServices */
if (pvalue->m.callServicesPresent) {
stat = asn1PE_H225QseriesOptions (pctxt, &pvalue->callServices);
if (stat != ASN_OK) return stat;
}
/* encode conferenceID */
stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
if (stat != ASN_OK) return stat;
/* encode activeMC */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->activeMC);
if (stat != ASN_OK) return stat;
/* encode answerCall */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->answerCall);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 18);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.canMapAliasPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.srcAlternativesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destAlternativesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.transportQOSPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.willSupplyUUIEsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callLinkagePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatewayDataRatePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredProtocolsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredTunnelledProtocolPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.canMapSrcAliasPresent);
/* encode extension elements */
if (pvalue->m.canMapAliasPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->canMapAlias);
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.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.srcAlternativesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->srcAlternatives);
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.destAlternativesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->destAlternatives);
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.gatekeeperIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225GatekeeperIdentifier (&lctxt, pvalue->gatekeeperIdentifier);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.transportQOSPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225TransportQOS (&lctxt, &pvalue->transportQOS);
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.willSupplyUUIEsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->willSupplyUUIEs);
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.callLinkagePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallLinkage (&lctxt, &pvalue->callLinkage);
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.gatewayDataRatePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225DataRate (&lctxt, &pvalue->gatewayDataRate);
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.capacityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
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.circuitInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
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.desiredProtocolsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedProtocols (&lctxt, &pvalue->desiredProtocols);
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.desiredTunnelledProtocolPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225TunnelledProtocol (&lctxt, &pvalue->desiredTunnelledProtocol);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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.canMapSrcAliasPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->canMapSrcAlias);
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);
}
/**************************************************************/
/* */
/* UUIEsRequested */
/* */
/**************************************************************/
EXTERN int asn1PE_H225UUIEsRequested (OOCTXT* pctxt, H225UUIEsRequested* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.statusPresent ||
pvalue->m.statusInquiryPresent ||
pvalue->m.setupAcknowledgePresent ||
pvalue->m.notifyPresent);
encodeBit (pctxt, extbit);
/* encode setup */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->setup);
if (stat != ASN_OK) return stat;
/* encode callProceeding */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->callProceeding);
if (stat != ASN_OK) return stat;
/* encode connect */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->connect);
if (stat != ASN_OK) return stat;
/* encode alerting */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->alerting);
if (stat != ASN_OK) return stat;
/* encode information */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->information);
if (stat != ASN_OK) return stat;
/* encode releaseComplete */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->releaseComplete);
if (stat != ASN_OK) return stat;
/* encode facility */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->facility);
if (stat != ASN_OK) return stat;
/* encode progress */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->progress);
if (stat != ASN_OK) return stat;
/* encode empty */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->empty);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 3);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.statusPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.statusInquiryPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.setupAcknowledgePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.notifyPresent);
/* encode extension elements */
if (pvalue->m.statusPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->status);
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.statusInquiryPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->statusInquiry);
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.setupAcknowledgePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->setupAcknowledge);
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.notifyPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->notify);
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);
}
/**************************************************************/
/* */
/* AdmissionConfirm_language */
/* */
/**************************************************************/
EXTERN int asn1PE_H225AdmissionConfirm_language (OOCTXT* pctxt, H225AdmissionConfirm_language* pvalue)
{
static Asn1SizeCnst element_lsize1 = { 0, 1, 32, 0 };
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
addSizeConstraint (pctxt, &element_lsize1);
stat = encodeConstrainedStringEx (pctxt, pvalue->elem[xx1], 0, 8, 7, 7);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* AdmissionConfirm */
/* */
/**************************************************************/
EXTERN int asn1PE_H225AdmissionConfirm (OOCTXT* pctxt, H225AdmissionConfirm* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.destinationInfoPresent ||
pvalue->m.destExtraCallInfoPresent ||
pvalue->m.destinationTypePresent ||
pvalue->m.remoteExtensionAddressPresent ||
pvalue->m.alternateEndpointsPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.transportQOSPresent ||
pvalue->m.willRespondToIRRPresent ||
pvalue->m.uuiesRequestedPresent ||
pvalue->m.languagePresent ||
pvalue->m.alternateTransportAddressesPresent ||
pvalue->m.useSpecifiedTransportPresent ||
pvalue->m.circuitInfoPresent ||
pvalue->m.usageSpecPresent ||
pvalue->m.supportedProtocolsPresent ||
pvalue->m.serviceControlPresent ||
pvalue->m.multipleCallsPresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent ||
pvalue->m.modifiedSrcInfoPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.irrFrequencyPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode bandWidth */
stat = asn1PE_H225BandWidth (pctxt, pvalue->bandWidth);
if (stat != ASN_OK) return stat;
/* encode callModel */
stat = asn1PE_H225CallModel (pctxt, &pvalue->callModel);
if (stat != ASN_OK) return stat;
/* encode destCallSignalAddress */
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->destCallSignalAddress);
if (stat != ASN_OK) return stat;
/* encode irrFrequency */
if (pvalue->m.irrFrequencyPresent) {
stat = encodeConsUnsigned (pctxt, pvalue->irrFrequency, 1U, 65535U);
if (stat != ASN_OK) return stat;
}
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 21);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCallInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationTypePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.remoteExtensionAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateEndpointsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.transportQOSPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.willRespondToIRRPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.uuiesRequestedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.languagePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateTransportAddressesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.useSpecifiedTransportPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageSpecPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedProtocolsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.modifiedSrcInfoPresent);
/* encode extension elements */
if (pvalue->m.destinationInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->destinationInfo);
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.destExtraCallInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->destExtraCallInfo);
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.destinationTypePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225EndpointType (&lctxt, &pvalue->destinationType);
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.remoteExtensionAddressPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->remoteExtensionAddress);
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.alternateEndpointsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->alternateEndpoints);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.transportQOSPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225TransportQOS (&lctxt, &pvalue->transportQOS);
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.willRespondToIRRPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->willRespondToIRR);
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.uuiesRequestedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225UUIEsRequested (&lctxt, &pvalue->uuiesRequested);
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.languagePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AdmissionConfirm_language (&lctxt, &pvalue->language);
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.alternateTransportAddressesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AlternateTransportAddresses (&lctxt, &pvalue->alternateTransportAddresses);
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.useSpecifiedTransportPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225UseSpecifiedTransport (&lctxt, &pvalue->useSpecifiedTransport);
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.circuitInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
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.usageSpecPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225RasUsageSpecification (&lctxt, &pvalue->usageSpec);
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.supportedProtocolsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedProtocols (&lctxt, &pvalue->supportedProtocols);
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.serviceControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
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.multipleCallsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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.modifiedSrcInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->modifiedSrcInfo);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225PartyNumber */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225PartyNumber (OOCTXT* pctxt, H225_SeqOfH225PartyNumber* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225PartyNumber (pctxt, ((H225PartyNumber*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* AdmissionRejectReason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225AdmissionRejectReason (OOCTXT* pctxt, H225AdmissionRejectReason* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 8);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 7);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* calledPartyNotRegistered */
case 1:
/* NULL */
break;
/* invalidPermission */
case 2:
/* NULL */
break;
/* requestDenied */
case 3:
/* NULL */
break;
/* undefinedReason */
case 4:
/* NULL */
break;
/* callerNotRegistered */
case 5:
/* NULL */
break;
/* routeCallToGatekeeper */
case 6:
/* NULL */
break;
/* invalidEndpointIdentifier */
case 7:
/* NULL */
break;
/* resourceUnavailable */
case 8:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 9);
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)
{
/* securityDenial */
case 9:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* qosControlNotSupported */
case 10:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* incompleteAddress */
case 11:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* aliasesInconsistent */
case 12:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* routeCallToSCN */
case 13:
stat = asn1PE_H225_SeqOfH225PartyNumber (&lctxt, pvalue->u.routeCallToSCN);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* exceedsCallCapacity */
case 14:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* collectDestination */
case 15:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* collectPIN */
case 16:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* genericDataReason */
case 17:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* neededFeatureNotSupported */
case 18:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityErrors */
case 19:
stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityErrors);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityDHmismatch */
case 20:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* noRouteToDestination */
case 21:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* unallocatedNumber */
case 22:
/* NULL */
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);
}
/**************************************************************/
/* */
/* AdmissionReject */
/* */
/**************************************************************/
EXTERN int asn1PE_H225AdmissionReject (OOCTXT* pctxt, H225AdmissionReject* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.callSignalAddressPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.serviceControlPresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode rejectReason */
stat = asn1PE_H225AdmissionRejectReason (pctxt, &pvalue->rejectReason);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 7);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callSignalAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.altGKInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.callSignalAddressPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225TransportAddress (&lctxt, &pvalue->callSignalAddress);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.serviceControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225BandwidthDetails */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225BandwidthDetails (OOCTXT* pctxt, H225_SeqOfH225BandwidthDetails* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225BandwidthDetails (pctxt, ((H225BandwidthDetails*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* BandwidthRequest */
/* */
/**************************************************************/
EXTERN int asn1PE_H225BandwidthRequest (OOCTXT* pctxt, H225BandwidthRequest* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
pvalue->m.gatekeeperIdentifierPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.answeredCallPresent ||
pvalue->m.callLinkagePresent ||
pvalue->m.capacityPresent ||
pvalue->m.usageInformationPresent ||
pvalue->m.bandwidthDetailsPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callTypePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode endpointIdentifier */
stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
if (stat != ASN_OK) return stat;
/* encode conferenceID */
stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
if (stat != ASN_OK) return stat;
/* encode callReferenceValue */
stat = asn1PE_H225CallReferenceValue (pctxt, pvalue->callReferenceValue);
if (stat != ASN_OK) return stat;
/* encode callType */
if (pvalue->m.callTypePresent) {
stat = asn1PE_H225CallType (pctxt, &pvalue->callType);
if (stat != ASN_OK) return stat;
}
/* encode bandWidth */
stat = asn1PE_H225BandWidth (pctxt, pvalue->bandWidth);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 10);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.answeredCallPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callLinkagePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageInformationPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.bandwidthDetailsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.gatekeeperIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225GatekeeperIdentifier (&lctxt, pvalue->gatekeeperIdentifier);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.answeredCallPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->answeredCall);
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.callLinkagePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallLinkage (&lctxt, &pvalue->callLinkage);
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.capacityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
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.usageInformationPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225RasUsageInformation (&lctxt, &pvalue->usageInformation);
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.bandwidthDetailsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225BandwidthDetails (&lctxt, &pvalue->bandwidthDetails);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* BandwidthConfirm */
/* */
/**************************************************************/
EXTERN int asn1PE_H225BandwidthConfirm (OOCTXT* pctxt, H225BandwidthConfirm* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.capacityPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode bandWidth */
stat = asn1PE_H225BandWidth (pctxt, pvalue->bandWidth);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 4);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.capacityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* BandRejectReason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225BandRejectReason (OOCTXT* pctxt, H225BandRejectReason* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 6);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 5);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* notBound */
case 1:
/* NULL */
break;
/* invalidConferenceID */
case 2:
/* NULL */
break;
/* invalidPermission */
case 3:
/* NULL */
break;
/* insufficientResources */
case 4:
/* NULL */
break;
/* invalidRevision */
case 5:
/* NULL */
break;
/* undefinedReason */
case 6:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 7);
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)
{
/* securityDenial */
case 7:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityError */
case 8:
stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityError);
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);
}
/**************************************************************/
/* */
/* BandwidthReject */
/* */
/**************************************************************/
EXTERN int asn1PE_H225BandwidthReject (OOCTXT* pctxt, H225BandwidthReject* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode rejectReason */
stat = asn1PE_H225BandRejectReason (pctxt, &pvalue->rejectReason);
if (stat != ASN_OK) return stat;
/* encode allowedBandWidth */
stat = asn1PE_H225BandWidth (pctxt, pvalue->allowedBandWidth);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 4);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.altGKInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* DisengageReason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225DisengageReason (OOCTXT* pctxt, H225DisengageReason* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 3);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* forcedDrop */
case 1:
/* NULL */
break;
/* normalDrop */
case 2:
/* NULL */
break;
/* undefinedReason */
case 3:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* DisengageRequest */
/* */
/**************************************************************/
EXTERN int asn1PE_H225DisengageRequest (OOCTXT* pctxt, H225DisengageRequest* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
pvalue->m.gatekeeperIdentifierPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.answeredCallPresent ||
pvalue->m.callLinkagePresent ||
pvalue->m.capacityPresent ||
pvalue->m.circuitInfoPresent ||
pvalue->m.usageInformationPresent ||
pvalue->m.terminationCausePresent ||
pvalue->m.serviceControlPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode endpointIdentifier */
stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
if (stat != ASN_OK) return stat;
/* encode conferenceID */
stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
if (stat != ASN_OK) return stat;
/* encode callReferenceValue */
stat = asn1PE_H225CallReferenceValue (pctxt, pvalue->callReferenceValue);
if (stat != ASN_OK) return stat;
/* encode disengageReason */
stat = asn1PE_H225DisengageReason (pctxt, &pvalue->disengageReason);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 12);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.answeredCallPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callLinkagePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageInformationPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.terminationCausePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.gatekeeperIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225GatekeeperIdentifier (&lctxt, pvalue->gatekeeperIdentifier);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.answeredCallPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->answeredCall);
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.callLinkagePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallLinkage (&lctxt, &pvalue->callLinkage);
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.capacityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
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.circuitInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
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.usageInformationPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225RasUsageInformation (&lctxt, &pvalue->usageInformation);
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.terminationCausePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallTerminationCause (&lctxt, &pvalue->terminationCause);
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.serviceControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* DisengageConfirm */
/* */
/**************************************************************/
EXTERN int asn1PE_H225DisengageConfirm (OOCTXT* pctxt, H225DisengageConfirm* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.capacityPresent ||
pvalue->m.circuitInfoPresent ||
pvalue->m.usageInformationPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 6);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageInformationPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.capacityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
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.circuitInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
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.usageInformationPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225RasUsageInformation (&lctxt, &pvalue->usageInformation);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* DisengageRejectReason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225DisengageRejectReason (OOCTXT* pctxt, H225DisengageRejectReason* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
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)
{
/* notRegistered */
case 1:
/* NULL */
break;
/* requestToDropOther */
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 */
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
switch (pvalue->t)
{
/* securityDenial */
case 3:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityError */
case 4:
stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityError);
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);
}
/**************************************************************/
/* */
/* DisengageReject */
/* */
/**************************************************************/
EXTERN int asn1PE_H225DisengageReject (OOCTXT* pctxt, H225DisengageReject* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode rejectReason */
stat = asn1PE_H225DisengageRejectReason (pctxt, &pvalue->rejectReason);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 4);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.altGKInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* LocationRequest */
/* */
/**************************************************************/
EXTERN int asn1PE_H225LocationRequest (OOCTXT* pctxt, H225LocationRequest* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.sourceInfoPresent ||
pvalue->m.canMapAliasPresent ||
pvalue->m.gatekeeperIdentifierPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.desiredProtocolsPresent ||
pvalue->m.desiredTunnelledProtocolPresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent ||
pvalue->m.hopCountPresent ||
pvalue->m.circuitInfoPresent ||
pvalue->m.callIdentifierPresent ||
pvalue->m.bandWidthPresent ||
pvalue->m.sourceEndpointInfoPresent ||
pvalue->m.canMapSrcAliasPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode endpointIdentifier */
if (pvalue->m.endpointIdentifierPresent) {
stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
if (stat != ASN_OK) return stat;
}
/* encode destinationInfo */
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->destinationInfo);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode replyAddress */
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->replyAddress);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 15);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.sourceInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.canMapAliasPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.gatekeeperIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredProtocolsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.desiredTunnelledProtocolPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.hopCountPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.bandWidthPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.sourceEndpointInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.canMapSrcAliasPresent);
/* encode extension elements */
if (pvalue->m.sourceInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->sourceInfo);
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.canMapAliasPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->canMapAlias);
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.gatekeeperIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225GatekeeperIdentifier (&lctxt, pvalue->gatekeeperIdentifier);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.desiredProtocolsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedProtocols (&lctxt, &pvalue->desiredProtocols);
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.desiredTunnelledProtocolPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225TunnelledProtocol (&lctxt, &pvalue->desiredTunnelledProtocol);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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.hopCountPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeConsUnsigned (&lctxt, pvalue->hopCount, 1U, 255U);
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.circuitInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
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.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.bandWidthPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225BandWidth (&lctxt, pvalue->bandWidth);
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.sourceEndpointInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->sourceEndpointInfo);
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.canMapSrcAliasPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->canMapSrcAlias);
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);
}
/**************************************************************/
/* */
/* LocationConfirm */
/* */
/**************************************************************/
EXTERN int asn1PE_H225LocationConfirm (OOCTXT* pctxt, H225LocationConfirm* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.destinationInfoPresent ||
pvalue->m.destExtraCallInfoPresent ||
pvalue->m.destinationTypePresent ||
pvalue->m.remoteExtensionAddressPresent ||
pvalue->m.alternateEndpointsPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.alternateTransportAddressesPresent ||
pvalue->m.supportedProtocolsPresent ||
pvalue->m.multipleCallsPresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent ||
pvalue->m.circuitInfoPresent ||
pvalue->m.serviceControlPresent ||
pvalue->m.modifiedSrcInfoPresent ||
pvalue->m.bandWidthPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode callSignalAddress */
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->callSignalAddress);
if (stat != ASN_OK) return stat;
/* encode rasAddress */
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->rasAddress);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 16);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destExtraCallInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.destinationTypePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.remoteExtensionAddressPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateEndpointsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.alternateTransportAddressesPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.supportedProtocolsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.multipleCallsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.modifiedSrcInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.bandWidthPresent);
/* encode extension elements */
if (pvalue->m.destinationInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->destinationInfo);
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.destExtraCallInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->destExtraCallInfo);
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.destinationTypePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225EndpointType (&lctxt, &pvalue->destinationType);
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.remoteExtensionAddressPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->remoteExtensionAddress);
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.alternateEndpointsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225Endpoint (&lctxt, &pvalue->alternateEndpoints);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.alternateTransportAddressesPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AlternateTransportAddresses (&lctxt, &pvalue->alternateTransportAddresses);
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.supportedProtocolsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225SupportedProtocols (&lctxt, &pvalue->supportedProtocols);
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.multipleCallsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->multipleCalls);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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.circuitInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
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.serviceControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
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.modifiedSrcInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225AliasAddress (&lctxt, &pvalue->modifiedSrcInfo);
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.bandWidthPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225BandWidth (&lctxt, pvalue->bandWidth);
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);
}
/**************************************************************/
/* */
/* LocationRejectReason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225LocationRejectReason (OOCTXT* pctxt, H225LocationRejectReason* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
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)
{
/* notRegistered */
case 1:
/* NULL */
break;
/* invalidPermission */
case 2:
/* NULL */
break;
/* requestDenied */
case 3:
/* NULL */
break;
/* undefinedReason */
case 4:
/* NULL */
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 */
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
switch (pvalue->t)
{
/* securityDenial */
case 5:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* aliasesInconsistent */
case 6:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* routeCalltoSCN */
case 7:
stat = asn1PE_H225_SeqOfH225PartyNumber (&lctxt, pvalue->u.routeCalltoSCN);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* resourceUnavailable */
case 8:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* genericDataReason */
case 9:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* neededFeatureNotSupported */
case 10:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* hopCountExceeded */
case 11:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* incompleteAddress */
case 12:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityError */
case 13:
stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityError);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* securityDHmismatch */
case 14:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* noRouteToDestination */
case 15:
/* NULL */
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* unallocatedNumber */
case 16:
/* NULL */
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);
}
/**************************************************************/
/* */
/* LocationReject */
/* */
/**************************************************************/
EXTERN int asn1PE_H225LocationReject (OOCTXT* pctxt, H225LocationReject* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.altGKInfoPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent ||
pvalue->m.serviceControlPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode rejectReason */
stat = asn1PE_H225LocationRejectReason (pctxt, &pvalue->rejectReason);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 6);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.serviceControlPresent);
/* encode extension elements */
if (pvalue->m.altGKInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225AltGKInfo (&lctxt, &pvalue->altGKInfo);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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.serviceControlPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ServiceControlSession (&lctxt, &pvalue->serviceControl);
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);
}
/**************************************************************/
/* */
/* InfoRequest */
/* */
/**************************************************************/
EXTERN int asn1PE_H225InfoRequest (OOCTXT* pctxt, H225InfoRequest* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.uuiesRequestedPresent ||
pvalue->m.callLinkagePresent ||
pvalue->m.usageInfoRequestedPresent ||
pvalue->m.segmentedResponseSupportedPresent ||
pvalue->m.nextSegmentRequestedPresent ||
pvalue->m.capacityInfoRequestedPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.replyAddressPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode callReferenceValue */
stat = asn1PE_H225CallReferenceValue (pctxt, pvalue->callReferenceValue);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode replyAddress */
if (pvalue->m.replyAddressPresent) {
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->replyAddress);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 10);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.uuiesRequestedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callLinkagePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageInfoRequestedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.segmentedResponseSupportedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nextSegmentRequestedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityInfoRequestedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.uuiesRequestedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225UUIEsRequested (&lctxt, &pvalue->uuiesRequested);
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.callLinkagePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallLinkage (&lctxt, &pvalue->callLinkage);
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.usageInfoRequestedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225RasUsageInfoTypes (&lctxt, &pvalue->usageInfoRequested);
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.segmentedResponseSupportedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.nextSegmentRequestedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeConsUnsigned (&lctxt, pvalue->nextSegmentRequested, 0U, 65535U);
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.capacityInfoRequestedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
/* NULL */
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225RTPSession */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225RTPSession (OOCTXT* pctxt, H225_SeqOfH225RTPSession* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225RTPSession (pctxt, ((H225RTPSession*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225TransportChannelInfo */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225TransportChannelInfo (OOCTXT* pctxt, H225_SeqOfH225TransportChannelInfo* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225TransportChannelInfo (pctxt, ((H225TransportChannelInfo*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225ConferenceIdentifier */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225ConferenceIdentifier (OOCTXT* pctxt, H225_SeqOfH225ConferenceIdentifier* pvalue)
{
int stat = ASN_OK;
ASN1UINT xx1;
/* encode length determinant */
stat = encodeLength (pctxt, pvalue->n);
if (stat < 0) return stat;
/* encode elements */
for (xx1 = 0; xx1 < pvalue->n; xx1++) {
stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->elem[xx1]);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* InfoRequestResponse_perCallInfo_element_pdu_element */
/* */
/**************************************************************/
EXTERN int asn1PE_H225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue)
{
int stat = ASN_OK;
/* encode h323pdu */
stat = asn1PE_H225H323_UU_PDU (pctxt, &pvalue->h323pdu);
if (stat != ASN_OK) return stat;
/* encode sent */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->sent);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_el */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225InfoRequestResponse_perCallInfo_element_pdu_element (pctxt, ((H225InfoRequestResponse_perCallInfo_element_pdu_element*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* InfoRequestResponse_perCallInfo_element */
/* */
/**************************************************************/
EXTERN int asn1PE_H225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.callIdentifierPresent ||
pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.substituteConfIDsPresent ||
pvalue->m.pduPresent ||
pvalue->m.callLinkagePresent ||
pvalue->m.usageInformationPresent ||
pvalue->m.circuitInfoPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.originatorPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.audioPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.videoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.dataPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode callReferenceValue */
stat = asn1PE_H225CallReferenceValue (pctxt, pvalue->callReferenceValue);
if (stat != ASN_OK) return stat;
/* encode conferenceID */
stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
if (stat != ASN_OK) return stat;
/* encode originator */
if (pvalue->m.originatorPresent) {
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->originator);
if (stat != ASN_OK) return stat;
}
/* encode audio */
if (pvalue->m.audioPresent) {
stat = asn1PE_H225_SeqOfH225RTPSession (pctxt, &pvalue->audio);
if (stat != ASN_OK) return stat;
}
/* encode video */
if (pvalue->m.videoPresent) {
stat = asn1PE_H225_SeqOfH225RTPSession (pctxt, &pvalue->video);
if (stat != ASN_OK) return stat;
}
/* encode data */
if (pvalue->m.dataPresent) {
stat = asn1PE_H225_SeqOfH225TransportChannelInfo (pctxt, &pvalue->data);
if (stat != ASN_OK) return stat;
}
/* encode h245 */
stat = asn1PE_H225TransportChannelInfo (pctxt, &pvalue->h245);
if (stat != ASN_OK) return stat;
/* encode callSignaling */
stat = asn1PE_H225TransportChannelInfo (pctxt, &pvalue->callSignaling);
if (stat != ASN_OK) return stat;
/* encode callType */
stat = asn1PE_H225CallType (pctxt, &pvalue->callType);
if (stat != ASN_OK) return stat;
/* encode bandWidth */
stat = asn1PE_H225BandWidth (pctxt, pvalue->bandWidth);
if (stat != ASN_OK) return stat;
/* encode callModel */
stat = asn1PE_H225CallModel (pctxt, &pvalue->callModel);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 7);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.substituteConfIDsPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.pduPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callLinkagePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.usageInformationPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.circuitInfoPresent);
/* encode extension elements */
if (pvalue->m.callIdentifierPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallIdentifier (&lctxt, &pvalue->callIdentifier);
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.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.substituteConfIDsPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ConferenceIdentifier (&lctxt, &pvalue->substituteConfIDs);
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.pduPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element (&lctxt, &pvalue->pdu);
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.callLinkagePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallLinkage (&lctxt, &pvalue->callLinkage);
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.usageInformationPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225RasUsageInformation (&lctxt, &pvalue->usageInformation);
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.circuitInfoPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CircuitInfo (&lctxt, &pvalue->circuitInfo);
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);
}
/**************************************************************/
/* */
/* _SeqOfH225InfoRequestResponse_perCallInfo_element */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225InfoRequestResponse_perCallInfo_element (pctxt, ((H225InfoRequestResponse_perCallInfo_element*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* InfoRequestResponseStatus */
/* */
/**************************************************************/
EXTERN int asn1PE_H225InfoRequestResponseStatus (OOCTXT* pctxt, H225InfoRequestResponseStatus* 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)
{
/* complete */
case 1:
/* NULL */
break;
/* incomplete */
case 2:
/* NULL */
break;
/* segment */
case 3:
stat = encodeConsUnsigned (pctxt, pvalue->u.segment, 0U, 65535U);
if (stat != ASN_OK) return stat;
break;
/* invalidCall */
case 4:
/* NULL */
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);
}
/**************************************************************/
/* */
/* InfoRequestResponse */
/* */
/**************************************************************/
EXTERN int asn1PE_H225InfoRequestResponse (OOCTXT* pctxt, H225InfoRequestResponse* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.needResponsePresent ||
pvalue->m.capacityPresent ||
pvalue->m.irrStatusPresent ||
pvalue->m.unsolicitedPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointAliasPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.perCallInfoPresent);
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode endpointType */
stat = asn1PE_H225EndpointType (pctxt, &pvalue->endpointType);
if (stat != ASN_OK) return stat;
/* encode endpointIdentifier */
stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
if (stat != ASN_OK) return stat;
/* encode rasAddress */
stat = asn1PE_H225TransportAddress (pctxt, &pvalue->rasAddress);
if (stat != ASN_OK) return stat;
/* encode callSignalAddress */
stat = asn1PE_H225_SeqOfH225TransportAddress (pctxt, &pvalue->callSignalAddress);
if (stat != ASN_OK) return stat;
/* encode endpointAlias */
if (pvalue->m.endpointAliasPresent) {
stat = asn1PE_H225_SeqOfH225AliasAddress (pctxt, &pvalue->endpointAlias);
if (stat != ASN_OK) return stat;
}
/* encode perCallInfo */
if (pvalue->m.perCallInfoPresent) {
stat = asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element (pctxt, &pvalue->perCallInfo);
if (stat != ASN_OK) return stat;
}
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 7);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.needResponsePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.capacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.irrStatusPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.unsolicitedPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.needResponsePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->needResponse);
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.capacityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
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.irrStatusPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225InfoRequestResponseStatus (&lctxt, &pvalue->irrStatus);
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.unsolicitedPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeBit (&lctxt, (ASN1BOOL)pvalue->unsolicited);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* NonStandardMessage */
/* */
/**************************************************************/
EXTERN int asn1PE_H225NonStandardMessage (OOCTXT* pctxt, H225NonStandardMessage* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.featureSetPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 4);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.featureSetPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225FeatureSet (&lctxt, &pvalue->featureSet);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* UnknownMessageResponse */
/* */
/**************************************************************/
EXTERN int asn1PE_H225UnknownMessageResponse (OOCTXT* pctxt, H225UnknownMessageResponse* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.tokensPresent ||
pvalue->m.cryptoTokensPresent ||
pvalue->m.integrityCheckValuePresent ||
pvalue->m.messageNotUnderstoodPresent);
encodeBit (pctxt, extbit);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
if (extbit) {
/* encode extension optional bits length */
stat = encodeSmallNonNegWholeNumber (pctxt, 3);
if (stat != ASN_OK) return stat;
/* encode optional bits */
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.messageNotUnderstoodPresent);
/* encode extension elements */
if (pvalue->m.tokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225ClearToken (&lctxt, &pvalue->tokens);
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.cryptoTokensPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225CryptoH323Token (&lctxt, &pvalue->cryptoTokens);
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.integrityCheckValuePresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225ICV (&lctxt, &pvalue->integrityCheckValue);
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.messageNotUnderstoodPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = encodeOctetString (&lctxt, pvalue->messageNotUnderstood.numocts, pvalue->messageNotUnderstood.data);
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);
}
/**************************************************************/
/* */
/* RequestInProgress */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RequestInProgress (OOCTXT* pctxt, H225RequestInProgress* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
/* encode integrityCheckValue */
if (pvalue->m.integrityCheckValuePresent) {
stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
if (stat != ASN_OK) return stat;
}
/* encode delay */
stat = encodeConsUnsigned (pctxt, pvalue->delay, 1U, 65535U);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* ResourcesAvailableIndicate */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ResourcesAvailableIndicate (OOCTXT* pctxt, H225ResourcesAvailableIndicate* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.capacityPresent ||
pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode endpointIdentifier */
stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
if (stat != ASN_OK) return stat;
/* encode protocols */
stat = asn1PE_H225_SeqOfH225SupportedProtocols (pctxt, &pvalue->protocols);
if (stat != ASN_OK) return stat;
/* encode almostOutOfResources */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->almostOutOfResources);
if (stat != ASN_OK) return stat;
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
/* encode integrityCheckValue */
if (pvalue->m.integrityCheckValuePresent) {
stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
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.capacityPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode extension elements */
if (pvalue->m.capacityPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225CallCapacity (&lctxt, &pvalue->capacity);
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.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* ResourcesAvailableConfirm */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ResourcesAvailableConfirm (OOCTXT* pctxt, H225ResourcesAvailableConfirm* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
ASN1OpenType openType;
OOCTXT lctxt;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->m.genericDataPresent);
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode protocolIdentifier */
stat = asn1PE_H225ProtocolIdentifier (pctxt, pvalue->protocolIdentifier);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
/* encode integrityCheckValue */
if (pvalue->m.integrityCheckValuePresent) {
stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
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.genericDataPresent);
/* encode extension elements */
if (pvalue->m.genericDataPresent) {
initContext (&lctxt);
stat = setPERBuffer (&lctxt, 0, 0, TRUE);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
stat = asn1PE_H225_SeqOfH225GenericData (&lctxt, &pvalue->genericData);
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);
}
/**************************************************************/
/* */
/* InfoRequestAck */
/* */
/**************************************************************/
EXTERN int asn1PE_H225InfoRequestAck (OOCTXT* pctxt, H225InfoRequestAck* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
/* encode integrityCheckValue */
if (pvalue->m.integrityCheckValuePresent) {
stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* InfoRequestNakReason */
/* */
/**************************************************************/
EXTERN int asn1PE_H225InfoRequestNakReason (OOCTXT* pctxt, H225InfoRequestNakReason* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 3);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 2);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* notRegistered */
case 1:
/* NULL */
break;
/* securityDenial */
case 2:
/* NULL */
break;
/* undefinedReason */
case 3:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 4);
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)
{
/* securityError */
case 4:
stat = asn1PE_H225SecurityErrors2 (&lctxt, pvalue->u.securityError);
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);
}
/**************************************************************/
/* */
/* InfoRequestNak */
/* */
/**************************************************************/
EXTERN int asn1PE_H225InfoRequestNak (OOCTXT* pctxt, H225InfoRequestNak* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.altGKInfoPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode nakReason */
stat = asn1PE_H225InfoRequestNakReason (pctxt, &pvalue->nakReason);
if (stat != ASN_OK) return stat;
/* encode altGKInfo */
if (pvalue->m.altGKInfoPresent) {
stat = asn1PE_H225AltGKInfo (pctxt, &pvalue->altGKInfo);
if (stat != ASN_OK) return stat;
}
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
/* encode integrityCheckValue */
if (pvalue->m.integrityCheckValuePresent) {
stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* ServiceControlIndication_callSpecific */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ServiceControlIndication_callSpecific (OOCTXT* pctxt, H225ServiceControlIndication_callSpecific* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
/* encode callIdentifier */
stat = asn1PE_H225CallIdentifier (pctxt, &pvalue->callIdentifier);
if (stat != ASN_OK) return stat;
/* encode conferenceID */
stat = asn1PE_H225ConferenceIdentifier (pctxt, &pvalue->conferenceID);
if (stat != ASN_OK) return stat;
/* encode answeredCall */
stat = encodeBit (pctxt, (ASN1BOOL)pvalue->answeredCall);
if (stat != ASN_OK) return stat;
return (stat);
}
/**************************************************************/
/* */
/* ServiceControlIndication */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ServiceControlIndication (OOCTXT* pctxt, H225ServiceControlIndication* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.endpointIdentifierPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.callSpecificPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode serviceControl */
stat = asn1PE_H225_SeqOfH225ServiceControlSession (pctxt, &pvalue->serviceControl);
if (stat != ASN_OK) return stat;
/* encode endpointIdentifier */
if (pvalue->m.endpointIdentifierPresent) {
stat = asn1PE_H225EndpointIdentifier (pctxt, pvalue->endpointIdentifier);
if (stat != ASN_OK) return stat;
}
/* encode callSpecific */
if (pvalue->m.callSpecificPresent) {
stat = asn1PE_H225ServiceControlIndication_callSpecific (pctxt, &pvalue->callSpecific);
if (stat != ASN_OK) return stat;
}
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
/* encode integrityCheckValue */
if (pvalue->m.integrityCheckValuePresent) {
stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
if (stat != ASN_OK) return stat;
}
/* encode featureSet */
if (pvalue->m.featureSetPresent) {
stat = asn1PE_H225FeatureSet (pctxt, &pvalue->featureSet);
if (stat != ASN_OK) return stat;
}
/* encode genericData */
if (pvalue->m.genericDataPresent) {
stat = asn1PE_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* ServiceControlResponse_result */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ServiceControlResponse_result (OOCTXT* pctxt, H225ServiceControlResponse_result* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 5);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 4);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* started */
case 1:
/* NULL */
break;
/* failed */
case 2:
/* NULL */
break;
/* stopped */
case 3:
/* NULL */
break;
/* notAvailable */
case 4:
/* NULL */
break;
/* neededFeatureNotSupported */
case 5:
/* NULL */
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 6);
if (stat != ASN_OK) return stat;
/* Encode extension element data value */
}
return (stat);
}
/**************************************************************/
/* */
/* ServiceControlResponse */
/* */
/**************************************************************/
EXTERN int asn1PE_H225ServiceControlResponse (OOCTXT* pctxt, H225ServiceControlResponse* pvalue)
{
int stat = ASN_OK;
ASN1BOOL extbit;
/* extension bit */
extbit = 0;
encodeBit (pctxt, extbit);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.resultPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardDataPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.tokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.cryptoTokensPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.integrityCheckValuePresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.featureSetPresent);
encodeBit (pctxt, (ASN1BOOL)pvalue->m.genericDataPresent);
/* encode requestSeqNum */
stat = asn1PE_H225RequestSeqNum (pctxt, pvalue->requestSeqNum);
if (stat != ASN_OK) return stat;
/* encode result */
if (pvalue->m.resultPresent) {
stat = asn1PE_H225ServiceControlResponse_result (pctxt, &pvalue->result);
if (stat != ASN_OK) return stat;
}
/* encode nonStandardData */
if (pvalue->m.nonStandardDataPresent) {
stat = asn1PE_H225NonStandardParameter (pctxt, &pvalue->nonStandardData);
if (stat != ASN_OK) return stat;
}
/* encode tokens */
if (pvalue->m.tokensPresent) {
stat = asn1PE_H225_SeqOfH225ClearToken (pctxt, &pvalue->tokens);
if (stat != ASN_OK) return stat;
}
/* encode cryptoTokens */
if (pvalue->m.cryptoTokensPresent) {
stat = asn1PE_H225_SeqOfH225CryptoH323Token (pctxt, &pvalue->cryptoTokens);
if (stat != ASN_OK) return stat;
}
/* encode integrityCheckValue */
if (pvalue->m.integrityCheckValuePresent) {
stat = asn1PE_H225ICV (pctxt, &pvalue->integrityCheckValue);
if (stat != ASN_OK) return stat;
}
/* encode featureSet */
if (pvalue->m.featureSetPresent) {
stat = asn1PE_H225FeatureSet (pctxt, &pvalue->featureSet);
if (stat != ASN_OK) return stat;
}
/* encode genericData */
if (pvalue->m.genericDataPresent) {
stat = asn1PE_H225_SeqOfH225GenericData (pctxt, &pvalue->genericData);
if (stat != ASN_OK) return stat;
}
return (stat);
}
/**************************************************************/
/* */
/* _SeqOfH225AdmissionConfirm */
/* */
/**************************************************************/
EXTERN int asn1PE_H225_SeqOfH225AdmissionConfirm (OOCTXT* pctxt, H225_SeqOfH225AdmissionConfirm* pvalue)
{
int stat = ASN_OK;
DListNode* pnode;
ASN1UINT xx1;
ASN1UINT enclen, fraglen;
enclen = fraglen = xx1 = 0;
pnode = pvalue->head;
for (;;) {
/* encode length determinant */
stat = encodeLength (pctxt, (pvalue->count - enclen));
if (stat < 0) return stat;
fraglen = stat;
enclen += fraglen;
/* encode elements */
for (; xx1 < enclen; xx1++) {
stat = asn1PE_H225AdmissionConfirm (pctxt, ((H225AdmissionConfirm*)pnode->data));
if (stat != ASN_OK) return stat;
pnode = pnode->next;
}
if ( pvalue->count == enclen && fraglen < 16384) {
break;
}
}
return (stat);
}
/**************************************************************/
/* */
/* RasMessage */
/* */
/**************************************************************/
EXTERN int asn1PE_H225RasMessage (OOCTXT* pctxt, H225RasMessage* pvalue)
{
int stat = ASN_OK;
OOCTXT lctxt;
ASN1OpenType openType;
ASN1BOOL extbit;
/* extension bit */
extbit = (ASN1BOOL)(pvalue->t > 25);
encodeBit (pctxt, extbit);
if (!extbit) {
/* Encode choice index value */
stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 24);
if (stat != ASN_OK) return stat;
/* Encode root element data value */
switch (pvalue->t)
{
/* gatekeeperRequest */
case 1:
stat = asn1PE_H225GatekeeperRequest (pctxt, pvalue->u.gatekeeperRequest);
if (stat != ASN_OK) return stat;
break;
/* gatekeeperConfirm */
case 2:
stat = asn1PE_H225GatekeeperConfirm (pctxt, pvalue->u.gatekeeperConfirm);
if (stat != ASN_OK) return stat;
break;
/* gatekeeperReject */
case 3:
stat = asn1PE_H225GatekeeperReject (pctxt, pvalue->u.gatekeeperReject);
if (stat != ASN_OK) return stat;
break;
/* registrationRequest */
case 4:
stat = asn1PE_H225RegistrationRequest (pctxt, pvalue->u.registrationRequest);
if (stat != ASN_OK) return stat;
break;
/* registrationConfirm */
case 5:
stat = asn1PE_H225RegistrationConfirm (pctxt, pvalue->u.registrationConfirm);
if (stat != ASN_OK) return stat;
break;
/* registrationReject */
case 6:
stat = asn1PE_H225RegistrationReject (pctxt, pvalue->u.registrationReject);
if (stat != ASN_OK) return stat;
break;
/* unregistrationRequest */
case 7:
stat = asn1PE_H225UnregistrationRequest (pctxt, pvalue->u.unregistrationRequest);
if (stat != ASN_OK) return stat;
break;
/* unregistrationConfirm */
case 8:
stat = asn1PE_H225UnregistrationConfirm (pctxt, pvalue->u.unregistrationConfirm);
if (stat != ASN_OK) return stat;
break;
/* unregistrationReject */
case 9:
stat = asn1PE_H225UnregistrationReject (pctxt, pvalue->u.unregistrationReject);
if (stat != ASN_OK) return stat;
break;
/* admissionRequest */
case 10:
stat = asn1PE_H225AdmissionRequest (pctxt, pvalue->u.admissionRequest);
if (stat != ASN_OK) return stat;
break;
/* admissionConfirm */
case 11:
stat = asn1PE_H225AdmissionConfirm (pctxt, pvalue->u.admissionConfirm);
if (stat != ASN_OK) return stat;
break;
/* admissionReject */
case 12:
stat = asn1PE_H225AdmissionReject (pctxt, pvalue->u.admissionReject);
if (stat != ASN_OK) return stat;
break;
/* bandwidthRequest */
case 13:
stat = asn1PE_H225BandwidthRequest (pctxt, pvalue->u.bandwidthRequest);
if (stat != ASN_OK) return stat;
break;
/* bandwidthConfirm */
case 14:
stat = asn1PE_H225BandwidthConfirm (pctxt, pvalue->u.bandwidthConfirm);
if (stat != ASN_OK) return stat;
break;
/* bandwidthReject */
case 15:
stat = asn1PE_H225BandwidthReject (pctxt, pvalue->u.bandwidthReject);
if (stat != ASN_OK) return stat;
break;
/* disengageRequest */
case 16:
stat = asn1PE_H225DisengageRequest (pctxt, pvalue->u.disengageRequest);
if (stat != ASN_OK) return stat;
break;
/* disengageConfirm */
case 17:
stat = asn1PE_H225DisengageConfirm (pctxt, pvalue->u.disengageConfirm);
if (stat != ASN_OK) return stat;
break;
/* disengageReject */
case 18:
stat = asn1PE_H225DisengageReject (pctxt, pvalue->u.disengageReject);
if (stat != ASN_OK) return stat;
break;
/* locationRequest */
case 19:
stat = asn1PE_H225LocationRequest (pctxt, pvalue->u.locationRequest);
if (stat != ASN_OK) return stat;
break;
/* locationConfirm */
case 20:
stat = asn1PE_H225LocationConfirm (pctxt, pvalue->u.locationConfirm);
if (stat != ASN_OK) return stat;
break;
/* locationReject */
case 21:
stat = asn1PE_H225LocationReject (pctxt, pvalue->u.locationReject);
if (stat != ASN_OK) return stat;
break;
/* infoRequest */
case 22:
stat = asn1PE_H225InfoRequest (pctxt, pvalue->u.infoRequest);
if (stat != ASN_OK) return stat;
break;
/* infoRequestResponse */
case 23:
stat = asn1PE_H225InfoRequestResponse (pctxt, pvalue->u.infoRequestResponse);
if (stat != ASN_OK) return stat;
break;
/* nonStandardMessage */
case 24:
stat = asn1PE_H225NonStandardMessage (pctxt, pvalue->u.nonStandardMessage);
if (stat != ASN_OK) return stat;
break;
/* unknownMessageResponse */
case 25:
stat = asn1PE_H225UnknownMessageResponse (pctxt, pvalue->u.unknownMessageResponse);
if (stat != ASN_OK) return stat;
break;
default:
return ASN_E_INVOPT;
}
}
else {
/* Encode extension choice index value */
stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 26);
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)
{
/* requestInProgress */
case 26:
stat = asn1PE_H225RequestInProgress (&lctxt, pvalue->u.requestInProgress);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* resourcesAvailableIndicate */
case 27:
stat = asn1PE_H225ResourcesAvailableIndicate (&lctxt, pvalue->u.resourcesAvailableIndicate);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* resourcesAvailableConfirm */
case 28:
stat = asn1PE_H225ResourcesAvailableConfirm (&lctxt, pvalue->u.resourcesAvailableConfirm);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* infoRequestAck */
case 29:
stat = asn1PE_H225InfoRequestAck (&lctxt, pvalue->u.infoRequestAck);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* infoRequestNak */
case 30:
stat = asn1PE_H225InfoRequestNak (&lctxt, pvalue->u.infoRequestNak);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* serviceControlIndication */
case 31:
stat = asn1PE_H225ServiceControlIndication (&lctxt, pvalue->u.serviceControlIndication);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* serviceControlResponse */
case 32:
stat = asn1PE_H225ServiceControlResponse (&lctxt, pvalue->u.serviceControlResponse);
if (stat != ASN_OK) return freeContext (&lctxt), stat;
openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
break;
/* admissionConfirmSequence */
case 33:
stat = asn1PE_H225_SeqOfH225AdmissionConfirm (&lctxt, pvalue->u.admissionConfirmSequence);
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);
}