亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? zl5011xpacketrx.c

?? Zalink50114----TDMoIP芯片驅動源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
         the RTP header when there is a choice of using if from the PW or RTP */
      par->rtpForceSeqNumber = ZL5011X_TRUE;

      if (zl5011xParams->devLimits.cesAvailable == ZL5011X_TRUE)
      {
         par->lengthUsage = ZL5011X_PACKET_LENGTH_CHECK;
         par->payloadLength = (Uint16T)ZL5011X_INVALID;
      }
      else
      {
         /* for the non-CES function, assume that the payload is only
            1 byte, since there is no need to queue data for playout */
         par->lengthUsage = ZL5011X_PACKET_LENGTH_SPECIFIED;
         par->payloadLength = 1;

         /* default to 16 bit sequence number for timing only operation */
         par->forceOneByteSeq = ZL5011X_FALSE;
      }

      /* checkLengthValue is only provided for compatability and lengthUsage should be
         used in preference */
      par->checkLengthValue = ZL5011X_TRUE;

      par->osExclusionEnable = ZL5011X_TRUE;

      par->removeHeader = ZL5011X_TRUE; /* Remove packet headers by default */
      par->disableTimestamp = ZL5011X_FALSE;

      /* Leave the status byte mask as ZL5011X_INVALID for the API to automatically
         determine the mask. Otherwise, a 1 means that the bit position will be
         checked for changes. */
      par->statusByteMask = (Uint32T)ZL5011X_INVALID;

      if (Zl5011xProtocolTableInitialised == ZL5011X_FALSE)
      {
         status = zl5011xPacketInitialiseTable(par);
      }

      par->classifyMpid = (Uint32T)ZL5011X_INVALID_CONTEXT;
   }

   return(status);
}

/******************************************************************************

 Function:
    zl5011xPacketRxSetProtocol

 Description:
    This is called to setup the protocol match structure which will be used
    to program the PKC to match packets arriving from contexts with a specific
    protocol stack.

 Inputs:
   zl5011xParams   Pointer to the structure for this device instance
   par            Pointer to the structure for configuration items. See below:

 Structure inputs:
   context              not used in this function
   protocolType         protocol type of the header being setup
   enableVlan           ZL5011X_TRUE if the protocol has a VLAN ethernet header
   enableSnap           ZL5011X_TRUE if the protocol has a SNAP ethernet header
   ipVer4               ZL5011X_TRUE for IPv4 and ZL5011X_FALSE for IPv6
   discardUdpCheckFails ZL5011X_TRUE to discard packets that fail UDP checksum
                        or ZL5011X_FALSE to forward them to the CPU
   enableL2TPCookie     for L2TPv3, the cookie is optional, set to ZL5011X_TRUE if the
                        cookie is present in the header
   contextDescriptorOffset specifies the position of the CD header (MT90880 compatibility)
   contextDescriptorNumber not used in this function
   header               pointer to the array holding packet header
   headerLength         length of the protocol header
   classifyMpid         not used in this function
   matchDestMacAddress  set to ZL5011X_TRUE to match destination MAC address
                        during the Protocol matching stage
   matchDestIpv4Address set to ZL5011X_TRUE to match Ipv4 destination address
                        during the Protocol matching stage
   matchSrcIpv4Address  not used in this function
   srcUdpPortMask       mask to apply to the UDP port, bits set to 1 are used for protocol matching
   destUdpPortMask      mask to apply to the UDP port, bits set to 1 are used for protocol matching
   enableClassificationChecks set to ZL5011X_FALSE to disable post classification checks
   payloadLength        not used in this function
   statusByteMask       mask to apply to the Pseudo Wire Status byte
                        changes in the status are ignored if mask bit is set to 1
   lengthUsage          controls how the length is checked / extracted from the packet
   checkLengthValue     DO NOT USE. see lengthUsage instead.
   rtpForceSeqNumber    set to ZL5011X_TRUE to force usage of the RTP sequence number
                        if the RTP and PW headers are both present.
                        (Note : in order to update the PW status byte, this must
                        be set to ZL5011X_TRUE when RTP is used)
   cpuQueue             not used in this function
   disableTimestamp     set to ZL5011X_TRUE to not extract the timestamp from the packet
                        NOTE : this invalidates RTP jitter calculations
   forceOneByteSeq      set to ZL5011X_TRUE to only use low byte of sequence number
                        from the packet
   protocolMatchNumber  can be set to specify which protocol match to use if the
                        protocol is not already defined, in which case the current
                        number is returned. If a number is not specified then
                        one will automatically be chosen.
   classifyMatchNumber  not used in this function
   removeHeader         not used in this function
   osExclusionEnable    ZL5011X_TRUE to enable OS exclusion

 Structure outputs:
   protocolMatchNumber  returns the protocol match number for this protocol stack

 Returns:
   zlStatusE

 Remarks:
   If the protocol IP->L2TPv3 is being used, then the control header MUST be
   set up before the data header.

******************************************************************************/

zlStatusE zl5011xPacketRxSetProtocol(zl5011xParamsS * zl5011xParams,
      zl5011xPacketRxSetHeaderS *par)
{
   zlStatusE status = ZL5011X_OK;
   zl5011xBooleanE gotDevice = ZL5011X_FALSE;

   /* do some parameter checking */
   status = ZL5011X_CHECK_POINTERS(zl5011xParams, par);

   if (status == ZL5011X_OK)
   {
      status = ZL5011X_CHECK_RUNNING(zl5011xParams);
   }

   if ((status == ZL5011X_OK) && (par->osExclusionEnable == ZL5011X_TRUE))
   {
      /* get access to the device */
      status = zl5011xPacketGetTable(ZL5011X_GET_DEVICE_TIMEOUT_MODE);

      if (status == ZL5011X_OK)
      {
         gotDevice = ZL5011X_TRUE;
      }
   }

   /* main function code starts */

   if (par->checkLengthValue == ZL5011X_FALSE)
   {
      /* provided for backwards compatability. If the deprecated parameter is changed
         from it's default value then override the length usage */
      par->lengthUsage = ZL5011X_PACKET_LENGTH_FROM_PKT;
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xPacketRxSetProtocolFunc(zl5011xParams, par);
   }

   if (gotDevice == ZL5011X_TRUE)
   {
      if (status == ZL5011X_OK)
      {
         status = zl5011xPacketReleaseTable();
      }
      else
      {
         /* already have an error code, so don't overwrite it */
         (void)zl5011xPacketReleaseTable();
      }
   }

   return status;
}

/******************************************************************************

 Function:
    zl5011xPacketRxSetProtocolFunc

 Description:
   This function is called from the OS exclusion wrapper function
   zl5011xPacketRxSetProtocol

 Inputs:
    par               Pointer to the zl5011xPacketRxSetHeaderS structure.

 Outputs:
   None

 Returns:
    zlStatusE

******************************************************************************/

static zlStatusE zl5011xPacketRxSetProtocolFunc(zl5011xParamsS * zl5011xParams,
      zl5011xPacketRxSetHeaderS *par)
{
   zlStatusE status = ZL5011X_OK;
   Uint16T deviceIndex;
   zl5011xLanRxSetProtocolMatchS * lanRxSetProtocolMatch;
   zl5011xPacketRxTemplateS * templateInUse;
   Uint32T n;
   Sint32T temp;
   Uint32T headerLength;
   Uint32T vlanOffset;
   Uint32T tempOffset;
   Uint32T snapOffset;
   Uint8T  seqOffset;
   Uint32T cookiePos;
   Uint32T cookieOffset;
   Uint32T realContextDescriptorOffset;
   Uint32T protocolMatchIndex;
   Uint32T headerMatchIndex;
   Uint32T protocolMaskIndex;
   Uint32T templateMaskIndex;
   Uint32T l2tpHeaderPos;
   Uint32T udpPos;
   zl5011xBooleanE ipv4Header;
   zl5011xBooleanE udpHeader;

   ZL5011X_TRACE(ZL5011X_PACKET_FN_ID,"zl5011xPacketRxSetProtocol:",0, 0, 0, 0, 0, 0);

   /* Check the arguments passed to the function */
   ZL5011X_CHECK_POINTER(par->header);
   if (par->protocolType >= ZL5011X_INVALID_PROTOCOL)
   {
      return(ZL5011X_PARAMETER_INVALID);
   }

   /* setup offsets for VLAN, SNAP and L2TPv3 cookie that will be used throughout */
   if (par->enableSnap == ZL5011X_TRUE)
   {
      snapOffset = ZL5011X_PKT_SNAP_FIELD_LEN;
   }
   else
   {
      snapOffset = 0;
   }

   if (par->enableVlan == ZL5011X_TRUE)
   {
      vlanOffset = ZL5011X_PKT_VLAN_HDR_LEN;
   }
   else
   {
      vlanOffset = 0;
   }

   /* Calculate where the LT2P Header will be if the protocol stack includes L2TPv3 */
   switch (par->protocolType)
   {
      case ZL5011X_IP_L2TPV3_PW:
      case ZL5011X_IP_L2TPV3_RTP_PW:
      case ZL5011X_IP_L2TPV3_RTCP_CTRL:
         l2tpHeaderPos = ZL5011X_PKT_ETHERNET_HDR_LEN + vlanOffset + snapOffset;

         if (par->ipVer4 == ZL5011X_TRUE)
         {
            l2tpHeaderPos += ZL5011X_PKT_IPV4_HDR_LEN;
         }
         else
         {
            l2tpHeaderPos += ZL5011X_PKT_IPV6_HDR_LEN;
         }

         if (par->enableL2TPCookie == ZL5011X_TRUE)
         {
            cookieOffset = ZL5011X_PKT_L2TPV3_COOKIE_LEN;
         }
         else
         {
            cookieOffset = 0;
         }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美男同性恋视频网站| 亚洲欧美偷拍另类a∨色屁股| 精品一区二区三区视频| 精品国产免费人成电影在线观看四季| 激情五月婷婷综合| 久久精品视频网| 色综合色综合色综合色综合色综合 | 91视频com| 亚洲女同ⅹxx女同tv| 欧美日韩精品电影| 激情五月婷婷综合| 国产精品福利一区| 欧美综合色免费| 九九久久精品视频| 国产精品久久久久一区| 91福利国产成人精品照片| 人人爽香蕉精品| 精品国产sm最大网站免费看| 99热精品国产| 男人的天堂亚洲一区| 欧美激情在线观看视频免费| 91福利视频在线| 人人狠狠综合久久亚洲| 欧美高清在线视频| 欧美日韩小视频| 国产精品一品视频| 一区二区三区在线观看国产| 日韩一区二区免费电影| 不卡电影一区二区三区| 91精品国产综合久久久久久久久久| 国模套图日韩精品一区二区| 亚洲女与黑人做爰| 日韩欧美电影一二三| 99re成人精品视频| 久久99热国产| 亚洲精品国产成人久久av盗摄| 91精品国产免费| av亚洲精华国产精华精华| 五月天激情小说综合| 国产女主播视频一区二区| 欧美日韩国产片| 成人免费不卡视频| 青青草成人在线观看| 亚洲色图视频免费播放| 日韩精品一区二区三区三区免费| 91在线精品一区二区三区| 久久99精品国产| 一个色在线综合| 国产日韩欧美一区二区三区乱码| 欧美日韩国产经典色站一区二区三区| 国产精品996| 天涯成人国产亚洲精品一区av| 中文字幕欧美三区| 欧美一区二区三区爱爱| 色综合久久综合| 国产麻豆午夜三级精品| 五月天激情综合| 亚洲欧美偷拍另类a∨色屁股| 久久久久久亚洲综合影院红桃| 免费欧美在线视频| 一区二区在线观看免费| 久久精品男人天堂av| 日韩一级片在线播放| 欧美在线小视频| 成人av网在线| 国产精品一二三区| 麻豆成人av在线| 天天操天天干天天综合网| ●精品国产综合乱码久久久久| 久久久亚洲综合| 日韩免费高清电影| 欧美三电影在线| 91网站视频在线观看| 国产电影精品久久禁18| 狂野欧美性猛交blacked| 亚洲.国产.中文慕字在线| 亚洲色图一区二区| 日本一区二区不卡视频| 欧美精品一区二区三区蜜桃| 91精品国产综合久久久久| 在线免费观看日本欧美| 91丝袜国产在线播放| 国产精品白丝jk白祙喷水网站| 精品综合久久久久久8888| 蜜臀91精品一区二区三区| 亚洲国产成人porn| 夜夜嗨av一区二区三区中文字幕| 国产精品久久99| 国产精品毛片无遮挡高清| 亚洲国产经典视频| 国产亚洲女人久久久久毛片| 2021久久国产精品不只是精品| 日韩视频国产视频| 日韩一区二区三区视频在线观看| 欧美另类变人与禽xxxxx| 欧美日韩成人高清| 欧美精品亚洲一区二区在线播放| 欧美日韩精品欧美日韩精品一综合| 在线精品视频小说1| 91久久线看在观草草青青| 91丨九色丨尤物| 色伊人久久综合中文字幕| 一本大道久久a久久综合| 色综合久久中文综合久久牛| 色偷偷久久人人79超碰人人澡| 色欧美日韩亚洲| 色偷偷久久一区二区三区| 日本韩国精品在线| 欧美日韩小视频| 欧美一级高清片在线观看| 日韩欧美激情在线| 久久这里只有精品6| 久久女同性恋中文字幕| 亚洲国产精华液网站w| 亚洲视频一二区| 亚洲宅男天堂在线观看无病毒| 亚瑟在线精品视频| 美女视频网站黄色亚洲| 国产在线一区二区| 国产91精品精华液一区二区三区| 丁香一区二区三区| 97久久精品人人澡人人爽| 色婷婷国产精品综合在线观看| 在线日韩一区二区| 欧美一区永久视频免费观看| 精品国产露脸精彩对白| 国产亚洲成av人在线观看导航| 国产精品你懂的| 亚洲一区二区三区三| 午夜精品福利一区二区三区蜜桃| 日本伊人精品一区二区三区观看方式| 蜜桃精品在线观看| 国产白丝网站精品污在线入口| 99久久99久久精品国产片果冻 | av电影一区二区| 欧美中文字幕一二三区视频| 91精品国产综合久久精品图片| 2019国产精品| 国产精品无码永久免费888| 亚洲欧美日韩系列| 日韩制服丝袜先锋影音| 国产做a爰片久久毛片| 97久久人人超碰| 91精品国产综合久久婷婷香蕉| 久久久久国产一区二区三区四区| 中文字幕一区日韩精品欧美| 亚洲一区在线观看视频| 久久精品国产久精国产爱| 粉嫩在线一区二区三区视频| 在线精品视频一区二区三四| 精品日韩av一区二区| 国产精品国产三级国产普通话三级| 亚洲在线一区二区三区| 久久aⅴ国产欧美74aaa| 972aa.com艺术欧美| 777久久久精品| 国产精品亲子伦对白| 五月婷婷综合在线| 国产高清精品在线| 在线日韩av片| 久久久久久久电影| 亚洲第一主播视频| 国产精品12区| 欧美欧美午夜aⅴ在线观看| 国产无人区一区二区三区| 亚洲午夜电影在线观看| 国产福利一区在线观看| 91极品视觉盛宴| 久久色在线观看| 亚洲福利电影网| 成人影视亚洲图片在线| 91麻豆精品国产91久久久久| 欧美激情一二三区| 三级成人在线视频| 成人av中文字幕| 日韩免费一区二区三区在线播放| 亚洲人精品午夜| 国产一区二区不卡老阿姨| 欧美日韩视频第一区| 国产精品动漫网站| 久久激情五月激情| 欧美在线free| 国产精品三级视频| 久久99精品久久久久久国产越南 | 国产一区二区免费看| 欧美午夜在线一二页| 中文字幕的久久| 美女在线观看视频一区二区| 欧美综合在线视频| 国产精品福利电影一区二区三区四区| 久久99热99| 欧美精三区欧美精三区| 日本高清成人免费播放| 国产欧美综合在线观看第十页| 日韩成人伦理电影在线观看| 色视频成人在线观看免| 国产校园另类小说区| 免费观看日韩av| 欧美二区三区91| 亚洲综合色区另类av|