field_t
static int decode_nul(struct bitstr *bs, const struct field_t *f, char *base, int level);
static int decode_bool(struct bitstr *bs, const struct field_t *f, char *base, int level);
static int decode_oid(struct bitstr *bs, const struct field_t *f, char *base, int level);
static int decode_int(struct bitstr *bs, const struct field_t *f, char *base, int level);
static int decode_enum(struct bitstr *bs, const struct field_t *f, char *base, int level);
static int decode_bitstr(struct bitstr *bs, const struct field_t *f, char *base, int level);
static int decode_numstr(struct bitstr *bs, const struct field_t *f, char *base, int level);
static int decode_octstr(struct bitstr *bs, const struct field_t *f, char *base, int level);
static int decode_bmpstr(struct bitstr *bs, const struct field_t *f, char *base, int level);
static int decode_seq(struct bitstr *bs, const struct field_t *f, char *base, int level);
static int decode_seqof(struct bitstr *bs, const struct field_t *f, char *base, int level);
static int decode_choice(struct bitstr *bs, const struct field_t *f, char *base, int level);
typedef int (*decoder_t)(struct bitstr *, const struct field_t *, char *, int);
static int decode_nul(struct bitstr *bs, const struct field_t *f,
static int decode_bool(struct bitstr *bs, const struct field_t *f,
static int decode_oid(struct bitstr *bs, const struct field_t *f,
static int decode_int(struct bitstr *bs, const struct field_t *f,
static int decode_enum(struct bitstr *bs, const struct field_t *f,
static int decode_bitstr(struct bitstr *bs, const struct field_t *f,
static int decode_numstr(struct bitstr *bs, const struct field_t *f,
static int decode_octstr(struct bitstr *bs, const struct field_t *f,
static int decode_bmpstr(struct bitstr *bs, const struct field_t *f,
static int decode_seq(struct bitstr *bs, const struct field_t *f,
const struct field_t *son;
static int decode_seqof(struct bitstr *bs, const struct field_t *f,
const struct field_t *son;
static int decode_choice(struct bitstr *bs, const struct field_t *f,
const struct field_t *son;
static const struct field_t ras_message = {
static const struct field_t h323_userinformation = {
static const struct field_t multimediasystemcontrolmessage = {
const struct field_t *fields;
static const struct field_t _H310Caps[] = { /* SEQUENCE */
static const struct field_t _ReleaseComplete_UUIE[] = { /* SEQUENCE */
static const struct field_t _Facility_UUIE_alternativeAliasAddress[] = { /* SEQUENCE OF */
static const struct field_t _FacilityReason[] = { /* CHOICE */
static const struct field_t _Facility_UUIE_fastStart[] = { /* SEQUENCE OF */
static const struct field_t _Facility_UUIE[] = { /* SEQUENCE */
static const struct field_t _H320Caps[] = { /* SEQUENCE */
static const struct field_t _CallIdentifier[] = { /* SEQUENCE */
static const struct field_t _SecurityServiceMode[] = { /* CHOICE */
static const struct field_t _SecurityCapabilities[] = { /* SEQUENCE */
static const struct field_t _H245Security[] = { /* CHOICE */
static const struct field_t _DHset[] = { /* SEQUENCE */
static const struct field_t _TypedCertificate[] = { /* SEQUENCE */
static const struct field_t _H235_NonStandardParameter[] = { /* SEQUENCE */
static const struct field_t _ClearToken[] = { /* SEQUENCE */
static const struct field_t _Progress_UUIE_tokens[] = { /* SEQUENCE OF */
static const struct field_t _H321Caps[] = { /* SEQUENCE */
static const struct field_t _Params[] = { /* SEQUENCE */
static const struct field_t _CryptoH323Token_cryptoEPPwdHash_token[] = { /* SEQUENCE */
static const struct field_t _CryptoH323Token_cryptoEPPwdHash[] = { /* SEQUENCE */
static const struct field_t _CryptoH323Token_cryptoGKPwdHash_token[] = { /* SEQUENCE */
static const struct field_t _CryptoH323Token_cryptoGKPwdHash[] = { /* SEQUENCE */
static const struct field_t _CryptoH323Token_cryptoEPPwdEncr[] = { /* SEQUENCE */
static const struct field_t _CryptoH323Token_cryptoGKPwdEncr[] = { /* SEQUENCE */
static const struct field_t _CryptoH323Token_cryptoEPCert[] = { /* SEQUENCE */
static const struct field_t _CryptoH323Token_cryptoGKCert[] = { /* SEQUENCE */
static const struct field_t _CryptoH323Token_cryptoFastStart[] = { /* SEQUENCE */
static const struct field_t _CryptoToken_cryptoEncryptedToken_token[] = { /* SEQUENCE */
static const struct field_t _H322Caps[] = { /* SEQUENCE */
static const struct field_t _CryptoToken_cryptoEncryptedToken[] = { /* SEQUENCE */
static const struct field_t _CryptoToken_cryptoSignedToken_token[] = { /* SEQUENCE */
static const struct field_t _CryptoToken_cryptoSignedToken[] = { /* SEQUENCE */
static const struct field_t _CryptoToken_cryptoHashedToken_token[] = { /* SEQUENCE */
static const struct field_t _CryptoToken_cryptoHashedToken[] = { /* SEQUENCE */
static const struct field_t _CryptoToken_cryptoPwdEncr[] = { /* SEQUENCE */
static const struct field_t _CryptoToken[] = { /* CHOICE */
static const struct field_t _CryptoH323Token[] = { /* CHOICE */
static const struct field_t _Progress_UUIE_cryptoTokens[] = { /* SEQUENCE OF */
static const struct field_t _TransportAddress_ipSourceRoute_route[] = { /* SEQUENCE OF */
static const struct field_t _H323Caps[] = { /* SEQUENCE */
static const struct field_t _Progress_UUIE_fastStart[] = { /* SEQUENCE OF */
static const struct field_t _Progress_UUIE[] = { /* SEQUENCE */
static const struct field_t _H323_UU_PDU_h323_message_body[] = { /* CHOICE */
static const struct field_t _RequestMessage[] = { /* CHOICE */
static const struct field_t _H324Caps[] = { /* SEQUENCE */
static const struct field_t _OpenLogicalChannelAck_reverseLogicalChannelParameters_multiplexParameters[] = { /* CHOICE */
static const struct field_t _OpenLogicalChannelAck_reverseLogicalChannelParameters[] = { /* SEQUENCE */
static const struct field_t _H2250LogicalChannelAckParameters_nonStandard[] = { /* SEQUENCE OF */
static const struct field_t _H2250LogicalChannelAckParameters[] = { /* SEQUENCE */
static const struct field_t _OpenLogicalChannelAck_forwardMultiplexAckParameters[] = { /* CHOICE */
static const struct field_t _OpenLogicalChannelAck[] = { /* SEQUENCE */
static const struct field_t _ResponseMessage[] = { /* CHOICE */
static const struct field_t _VoiceCaps[] = { /* SEQUENCE */
static const struct field_t _MultimediaSystemControlMessage[] = { /* CHOICE */
static const struct field_t _H323_UU_PDU_h245Control[] = { /* SEQUENCE OF */
static const struct field_t _H323_UU_PDU[] = { /* SEQUENCE */
static const struct field_t _H323_UserInformation[] = { /* SEQUENCE */
static const struct field_t _T120OnlyCaps[] = { /* SEQUENCE */
static const struct field_t _GatekeeperRequest[] = { /* SEQUENCE */
static const struct field_t _GatekeeperConfirm[] = { /* SEQUENCE */
static const struct field_t _RegistrationRequest_callSignalAddress[] = { /* SEQUENCE OF */
static const struct field_t _RegistrationRequest_rasAddress[] = { /* SEQUENCE OF */
static const struct field_t _RegistrationRequest_terminalAlias[] = { /* SEQUENCE OF */
static const struct field_t _RegistrationRequest[] = { /* SEQUENCE */
static const struct field_t _SupportedProtocols[] = { /* CHOICE */
static const struct field_t _RegistrationConfirm_callSignalAddress[] = { /* SEQUENCE OF */
static const struct field_t _RegistrationConfirm_terminalAlias[] = { /* SEQUENCE OF */
static const struct field_t _RegistrationConfirm[] = { /* SEQUENCE */
static const struct field_t _UnregistrationRequest_callSignalAddress[] = { /* SEQUENCE OF */
static const struct field_t _UnregistrationRequest[] = { /* SEQUENCE */
static const struct field_t _CallModel[] = { /* CHOICE */
static const struct field_t _TransportAddress_ipSourceRoute_routing[] = { /* CHOICE */
static const struct field_t _AdmissionRequest_destinationInfo[] = { /* SEQUENCE OF */
static const struct field_t _AdmissionRequest_destExtraCallInfo[] = { /* SEQUENCE OF */
static const struct field_t _AdmissionRequest_srcInfo[] = { /* SEQUENCE OF */
static const struct field_t _AdmissionRequest[] = { /* SEQUENCE */
static const struct field_t _GatewayInfo_protocol[] = { /* SEQUENCE OF */
static const struct field_t _AdmissionConfirm[] = { /* SEQUENCE */
static const struct field_t _GatewayInfo[] = { /* SEQUENCE */
static const struct field_t _LocationRequest_destinationInfo[] = { /* SEQUENCE OF */
static const struct field_t _LocationRequest[] = { /* SEQUENCE */
static const struct field_t _LocationConfirm[] = { /* SEQUENCE */
static const struct field_t _McuInfo[] = { /* SEQUENCE */
static const struct field_t _InfoRequestResponse_callSignalAddress[] = { /* SEQUENCE OF */
static const struct field_t _InfoRequestResponse[] = { /* SEQUENCE */
static const struct field_t _RasMessage[] = { /* CHOICE */
static const struct field_t _TerminalInfo[] = { /* SEQUENCE */
static const struct field_t _EndpointType[] = { /* SEQUENCE */
static const struct field_t _Setup_UUIE_destinationAddress[] = { /* SEQUENCE OF */
static const struct field_t _Setup_UUIE_destExtraCallInfo[] = { /* SEQUENCE OF */
static const struct field_t _TransportAddress_ipSourceRoute[] = { /* SEQUENCE */
static const struct field_t _Setup_UUIE_destExtraCRV[] = { /* SEQUENCE OF */
static const struct field_t _Setup_UUIE_conferenceGoal[] = { /* CHOICE */
static const struct field_t _Q954Details[] = { /* SEQUENCE */
static const struct field_t _QseriesOptions[] = { /* SEQUENCE */
static const struct field_t _CallType[] = { /* CHOICE */
static const struct field_t _H245_NonStandardIdentifier_h221NonStandard[] = { /* SEQUENCE */
static const struct field_t _H245_NonStandardIdentifier[] = { /* CHOICE */
static const struct field_t _H245_NonStandardParameter[] = { /* SEQUENCE */
static const struct field_t _H261VideoCapability[] = { /* SEQUENCE */
static const struct field_t _H262VideoCapability[] = { /* SEQUENCE */
static const struct field_t _H263VideoCapability[] = { /* SEQUENCE */
static const struct field_t _TransportAddress_ipxAddress[] = { /* SEQUENCE */
static const struct field_t _IS11172VideoCapability[] = { /* SEQUENCE */
static const struct field_t _VideoCapability[] = { /* CHOICE */
static const struct field_t _AudioCapability_g7231[] = { /* SEQUENCE */
static const struct field_t _IS11172AudioCapability[] = { /* SEQUENCE */
static const struct field_t _TransportAddress_ip6Address[] = { /* SEQUENCE */
static const struct field_t _IS13818AudioCapability[] = { /* SEQUENCE */
static const struct field_t _AudioCapability[] = { /* CHOICE */
static const struct field_t _DataProtocolCapability[] = { /* CHOICE */
static const struct field_t _H221NonStandard[] = { /* SEQUENCE */
static const struct field_t _T84Profile_t84Restricted[] = { /* SEQUENCE */
static const struct field_t _T84Profile[] = { /* CHOICE */
static const struct field_t _DataApplicationCapability_application_t84[] = { /* SEQUENCE */
static const struct field_t _DataApplicationCapability_application_nlpid[] = { /* SEQUENCE */
static const struct field_t _DataApplicationCapability_application[] = { /* CHOICE */
static const struct field_t _NonStandardIdentifier[] = { /* CHOICE */
static const struct field_t _DataApplicationCapability[] = { /* SEQUENCE */
static const struct field_t _EncryptionMode[] = { /* CHOICE */
static const struct field_t _DataType[] = { /* CHOICE */
static const struct field_t _H222LogicalChannelParameters[] = { /* SEQUENCE */
static const struct field_t _H223LogicalChannelParameters_adaptationLayerType_al3[] = { /* SEQUENCE */
static const struct field_t _NonStandardParameter[] = { /* SEQUENCE */
static const struct field_t _H223LogicalChannelParameters_adaptationLayerType[] = { /* CHOICE */
static const struct field_t _H223LogicalChannelParameters[] = { /* SEQUENCE */
static const struct field_t _CRCLength[] = { /* CHOICE */
static const struct field_t _V76HDLCParameters[] = { /* SEQUENCE */
static const struct field_t _V76LogicalChannelParameters_suspendResume[] = { /* CHOICE */
static const struct field_t _V76LogicalChannelParameters_mode_eRM_recovery[] = { /* CHOICE */
static const struct field_t _V76LogicalChannelParameters_mode_eRM[] = { /* SEQUENCE */
static const struct field_t _V76LogicalChannelParameters_mode[] = { /* CHOICE */
static const struct field_t _V75Parameters[] = { /* SEQUENCE */
static const struct field_t _TransportAddress[] = { /* CHOICE */
static const struct field_t _V76LogicalChannelParameters[] = { /* SEQUENCE */
static const struct field_t _H2250LogicalChannelParameters_nonStandard[] = { /* SEQUENCE OF */
static const struct field_t _UnicastAddress_iPAddress[] = { /* SEQUENCE */
static const struct field_t _UnicastAddress_iPXAddress[] = { /* SEQUENCE */
static const struct field_t _UnicastAddress_iP6Address[] = { /* SEQUENCE */
static const struct field_t _UnicastAddress_iPSourceRouteAddress_routing[] = { /* CHOICE */
static const struct field_t _UnicastAddress_iPSourceRouteAddress_route[] = { /* SEQUENCE OF */
static const struct field_t _UnicastAddress_iPSourceRouteAddress[] = { /* SEQUENCE */
static const struct field_t _UnicastAddress[] = { /* CHOICE */
static const struct field_t _MulticastAddress_iPAddress[] = { /* SEQUENCE */
static const struct field_t _MulticastAddress_iP6Address[] = { /* SEQUENCE */
static const struct field_t _MulticastAddress[] = { /* CHOICE */
static const struct field_t _H245_TransportAddress[] = { /* CHOICE */
static const struct field_t _TransportAddress_ipAddress[] = { /* SEQUENCE */
static const struct field_t _H2250LogicalChannelParameters[] = { /* SEQUENCE */
static const struct field_t _OpenLogicalChannel_forwardLogicalChannelParameters_multiplexParameters[] = { /* CHOICE */
static const struct field_t _OpenLogicalChannel_forwardLogicalChannelParameters[] = { /* SEQUENCE */
static const struct field_t _OpenLogicalChannel_reverseLogicalChannelParameters_multiplexParameters[] = { /* CHOICE */
static const struct field_t _OpenLogicalChannel_reverseLogicalChannelParameters[] = { /* SEQUENCE */
static const struct field_t _AliasAddress[] = { /* CHOICE */
static const struct field_t _NetworkAccessParameters_distribution[] = { /* CHOICE */
static const struct field_t _Q2931Address_address[] = { /* CHOICE */
static const struct field_t _Q2931Address[] = { /* SEQUENCE */
static const struct field_t _NetworkAccessParameters_networkAddress[] = { /* CHOICE */
static const struct field_t _NetworkAccessParameters[] = { /* SEQUENCE */
static const struct field_t _OpenLogicalChannel[] = { /* SEQUENCE */
static const struct field_t _Setup_UUIE_fastStart[] = { /* SEQUENCE OF */
static const struct field_t _Setup_UUIE[] = { /* SEQUENCE */
static const struct field_t _Setup_UUIE_sourceAddress[] = { /* SEQUENCE OF */
static const struct field_t _CallProceeding_UUIE_fastStart[] = { /* SEQUENCE OF */
static const struct field_t _CallProceeding_UUIE[] = { /* SEQUENCE */
static const struct field_t _VendorIdentifier[] = { /* SEQUENCE */
static const struct field_t _Connect_UUIE_fastStart[] = { /* SEQUENCE OF */
static const struct field_t _Connect_UUIE[] = { /* SEQUENCE */
static const struct field_t _Alerting_UUIE_fastStart[] = { /* SEQUENCE OF */
static const struct field_t _Alerting_UUIE[] = { /* SEQUENCE */
static const struct field_t _GatekeeperInfo[] = { /* SEQUENCE */
static const struct field_t _Information_UUIE[] = { /* SEQUENCE */
static const struct field_t _ReleaseCompleteReason[] = { /* CHOICE */