⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h323-messagesdec.c

📁 一个非常美妙的proxy。功能强大。基于sip的协议。如果还要的话
💻 C
📖 第 1 页 / 共 5 页
字号:
   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 + -