📄 h323-messagesdec.c
字号:
static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 }; int stat = ASN_OK; addSizeConstraint (pctxt, &lsize1); stat = decodeOctetString (pctxt, &pvalue->numocts, pvalue->data, sizeof(pvalue->data)); if (stat != ASN_OK) return stat; invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); return (stat);}/**************************************************************//* *//* TransportAddress_nsap *//* *//**************************************************************/EXTERN int asn1PD_H225TransportAddress_nsap (OOCTXT* pctxt, H225TransportAddress_nsap* pvalue){ static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 }; int stat = ASN_OK; addSizeConstraint (pctxt, &lsize1); stat = decodeOctetString (pctxt, &pvalue->numocts, pvalue->data, sizeof(pvalue->data)); if (stat != ASN_OK) return stat; invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data); return (stat);}/**************************************************************//* *//* H221NonStandard *//* *//**************************************************************/EXTERN int asn1PD_H225H221NonStandard (OOCTXT* pctxt, H225H221NonStandard* pvalue){ int stat = ASN_OK; OOCTXT lctxt; ASN1OpenType openType; ASN1UINT bitcnt; ASN1UINT i; ASN1BOOL optbit; ASN1BOOL extbit; /* extension bit */ DECODEBIT (pctxt, &extbit); /* decode t35CountryCode */ invokeStartElement (pctxt, "t35CountryCode", -1); stat = decodeConsUInt8 (pctxt, &pvalue->t35CountryCode, 0U, 255U); if (stat != ASN_OK) return stat; invokeUIntValue (pctxt, pvalue->t35CountryCode); invokeEndElement (pctxt, "t35CountryCode", -1); /* decode t35Extension */ invokeStartElement (pctxt, "t35Extension", -1); stat = decodeConsUInt8 (pctxt, &pvalue->t35Extension, 0U, 255U); if (stat != ASN_OK) return stat; invokeUIntValue (pctxt, pvalue->t35Extension); invokeEndElement (pctxt, "t35Extension", -1); /* decode manufacturerCode */ invokeStartElement (pctxt, "manufacturerCode", -1); stat = decodeConsUInt16 (pctxt, &pvalue->manufacturerCode, 0U, 65535U); if (stat != ASN_OK) return stat; invokeUIntValue (pctxt, pvalue->manufacturerCode); invokeEndElement (pctxt, "manufacturerCode", -1); if (extbit) { /* decode extension optional bits length */ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt); if (stat != ASN_OK) return stat; bitcnt += 1; ZEROCONTEXT (&lctxt); stat = setPERBufferUsingCtxt (&lctxt, pctxt); if (stat != ASN_OK) return stat; stat = moveBitCursor (pctxt, bitcnt); if (stat != ASN_OK) return stat; for (i = 0; i < bitcnt; i++) { DECODEBIT (&lctxt, &optbit); if (optbit) { stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); if (stat != ASN_OK) return stat; pctxt->buffer.byteIndex += openType.numocts; } } } return (stat);}/**************************************************************//* *//* NonStandardIdentifier *//* *//**************************************************************/EXTERN int asn1PD_H225NonStandardIdentifier (OOCTXT* pctxt, H225NonStandardIdentifier* pvalue){ int stat = ASN_OK; ASN1UINT ui; ASN1OpenType openType; ASN1BOOL extbit; /* extension bit */ DECODEBIT (pctxt, &extbit); if (!extbit) { stat = decodeConsUnsigned (pctxt, &ui, 0, 1); if (stat != ASN_OK) return stat; else pvalue->t = ui + 1; switch (ui) { /* object */ case 0: invokeStartElement (pctxt, "object", -1); pvalue->u.object = ALLOC_ASN1ELEM (pctxt, ASN1OBJID); stat = decodeObjectIdentifier (pctxt, pvalue->u.object); if (stat != ASN_OK) return stat; invokeOidValue (pctxt, pvalue->u.object->numids, pvalue->u.object->subid); invokeEndElement (pctxt, "object", -1); break; /* h221NonStandard */ case 1: invokeStartElement (pctxt, "h221NonStandard", -1); pvalue->u.h221NonStandard = ALLOC_ASN1ELEM (pctxt, H225H221NonStandard); stat = asn1PD_H225H221NonStandard (pctxt, pvalue->u.h221NonStandard); if (stat != ASN_OK) return stat; invokeEndElement (pctxt, "h221NonStandard", -1); break; default: return ASN_E_INVOPT; } } else { stat = decodeSmallNonNegWholeNumber (pctxt, &ui); if (stat != ASN_OK) return stat; else pvalue->t = ui + 3; stat = decodeByteAlign (pctxt); if (stat != ASN_OK) return stat; stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); if (stat != ASN_OK) return stat; } return (stat);}/**************************************************************//* *//* NonStandardParameter *//* *//**************************************************************/EXTERN int asn1PD_H225NonStandardParameter (OOCTXT* pctxt, H225NonStandardParameter* pvalue){ int stat = ASN_OK; /* decode nonStandardIdentifier */ invokeStartElement (pctxt, "nonStandardIdentifier", -1); stat = asn1PD_H225NonStandardIdentifier (pctxt, &pvalue->nonStandardIdentifier); if (stat != ASN_OK) return stat; invokeEndElement (pctxt, "nonStandardIdentifier", -1); /* decode data */ invokeStartElement (pctxt, "data", -1); stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->data); if (stat != ASN_OK) return stat; invokeOctStrValue (pctxt, pvalue->data.numocts, pvalue->data.data); invokeEndElement (pctxt, "data", -1); return (stat);}/**************************************************************//* *//* TransportAddress *//* *//**************************************************************/EXTERN int asn1PD_H225TransportAddress (OOCTXT* pctxt, H225TransportAddress* pvalue){ int stat = ASN_OK; ASN1UINT ui; ASN1OpenType openType; ASN1BOOL extbit; /* extension bit */ DECODEBIT (pctxt, &extbit); if (!extbit) { stat = decodeConsUnsigned (pctxt, &ui, 0, 6); if (stat != ASN_OK) return stat; else pvalue->t = ui + 1; switch (ui) { /* ipAddress */ case 0: invokeStartElement (pctxt, "ipAddress", -1); pvalue->u.ipAddress = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ipAddress); stat = asn1PD_H225TransportAddress_ipAddress (pctxt, pvalue->u.ipAddress); if (stat != ASN_OK) return stat; invokeEndElement (pctxt, "ipAddress", -1); break; /* ipSourceRoute */ case 1: invokeStartElement (pctxt, "ipSourceRoute", -1); pvalue->u.ipSourceRoute = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ipSourceRoute); stat = asn1PD_H225TransportAddress_ipSourceRoute (pctxt, pvalue->u.ipSourceRoute); if (stat != ASN_OK) return stat; invokeEndElement (pctxt, "ipSourceRoute", -1); break; /* ipxAddress */ case 2: invokeStartElement (pctxt, "ipxAddress", -1); pvalue->u.ipxAddress = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ipxAddress); stat = asn1PD_H225TransportAddress_ipxAddress (pctxt, pvalue->u.ipxAddress); if (stat != ASN_OK) return stat; invokeEndElement (pctxt, "ipxAddress", -1); break; /* ip6Address */ case 3: invokeStartElement (pctxt, "ip6Address", -1); pvalue->u.ip6Address = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ip6Address); stat = asn1PD_H225TransportAddress_ip6Address (pctxt, pvalue->u.ip6Address); if (stat != ASN_OK) return stat; invokeEndElement (pctxt, "ip6Address", -1); break; /* netBios */ case 4: invokeStartElement (pctxt, "netBios", -1); pvalue->u.netBios = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_netBios); stat = asn1PD_H225TransportAddress_netBios (pctxt, pvalue->u.netBios); if (stat != ASN_OK) return stat; invokeEndElement (pctxt, "netBios", -1); break; /* nsap */ case 5: invokeStartElement (pctxt, "nsap", -1); pvalue->u.nsap = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_nsap); stat = asn1PD_H225TransportAddress_nsap (pctxt, pvalue->u.nsap); if (stat != ASN_OK) return stat; invokeEndElement (pctxt, "nsap", -1); break; /* nonStandardAddress */ case 6: invokeStartElement (pctxt, "nonStandardAddress", -1); pvalue->u.nonStandardAddress = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter); stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandardAddress); if (stat != ASN_OK) return stat; invokeEndElement (pctxt, "nonStandardAddress", -1); break; default: return ASN_E_INVOPT; } } else { stat = decodeSmallNonNegWholeNumber (pctxt, &ui); if (stat != ASN_OK) return stat; else pvalue->t = ui + 8; stat = decodeByteAlign (pctxt); if (stat != ASN_OK) return stat; stat = decodeOpenType (pctxt, &openType.data, &openType.numocts); if (stat != ASN_OK) return stat; } return (stat);}/**************************************************************//* *//* PublicTypeOfNumber *//* *//**************************************************************/EXTERN int asn1PD_H225PublicTypeOfNumber (OOCTXT* pctxt, H225PublicTypeOfNumber* pvalue){ int stat = ASN_OK; ASN1UINT ui; ASN1OpenType openType; ASN1BOOL extbit; /* extension bit */ DECODEBIT (pctxt, &extbit); if (!extbit) { stat = decodeConsUnsigned (pctxt, &ui, 0, 5); if (stat != ASN_OK) return stat; else pvalue->t = ui + 1; switch (ui) { /* unknown */ case 0: invokeStartElement (pctxt, "unknown", -1); /* NULL */ invokeNullValue (pctxt); invokeEndElement (pctxt, "unknown", -1); break; /* internationalNumber */ case 1: invokeStartElement (pctxt, "internationalNumber", -1); /* NULL */ invokeNullValue (pctxt); invokeEndElement (pctxt, "internationalNumber", -1); break; /* nationalNumber */ case 2: invokeStartElement (pctxt, "nationalNumber", -1); /* NULL */ invokeNullValue (pctxt); invokeEndElement (pctxt, "nationalNumber", -1); break; /* networkSpecificNumber */ case 3: invokeStartElement (pctxt, "networkSpecificNumber", -1); /* NULL */ invokeNullValue (pctxt); invokeEndElement (pctxt, "networkSpecificNumber", -1); break; /* subscriberNumber */ case 4: invokeStartElement (pctxt, "subscriberNumber", -1); /* NULL */ invokeNullValue (pctxt); invokeEndElement (pctxt, "subscriberNumber", -1); break; /* abbreviatedNumber */ case 5: invokeStartElement (pctxt, "abbreviatedNumber", -1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -