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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? zl5011xpackettx.c

?? Zalink50114----TDMoIP芯片驅(qū)動源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
      layer2and3Header = (zl5011xLanTxSetLayer2and3HeaderS *)OS_CALLOC(
            sizeof(zl5011xLanTxSetLayer2and3HeaderS), 1);
      layer4and5Header = (zl5011xLanTxSetLayer4and5HeaderS *)OS_CALLOC(
            sizeof(zl5011xLanTxSetLayer4and5HeaderS), 1);
   }

   if (status == ZL5011X_OK)
   {
      if ((layer2and3Header == NULL) || (layer4and5Header == NULL))
      {
         status = ZL5011X_RTOS_MEMORY_FAIL;
      }
   }

   /* Call the lower level API structure initialisation functions */
   if (status == ZL5011X_OK)
   {
      status = zl5011xLanTxSetLayer2and3HeaderStructInit(zl5011xParams, layer2and3Header);
      layer2and3Header->osExclusionEnable = par->osExclusionEnable;
   }

   if (status == ZL5011X_OK)
   {
      status = zl5011xLanTxSetLayer4and5HeaderStructInit(zl5011xParams, layer4and5Header);
      layer4and5Header->osExclusionEnable = par->osExclusionEnable;
   }

   /* Copy structure members that are common for all protocol stacks */
   if (status == ZL5011X_OK)
   {
      layer2and3Header->header.ethernetSrcAddressFromMac = par->ethernetSrcAddressFromMac;
      layer2and3Header->context = par->context;
      layer2and3Header->portNum = par->portNum;
      layer2and3Header->queueNum = par->queueNum;
      layer4and5Header->context = par->context;
   }

   if ((par->headerLength == 0) || (par->header == NULL))
   {
      /* A Lan-to-Lan context is allowed to have a null header added
         but for other contexts this is an error */
      if (zl5011xParams->packetIf.lanLanContext[par->context] == ZL5011X_FALSE)
      {
         status = ZL5011X_PARAMETER_INVALID;
      }
   }
   else
   {
      if (status == ZL5011X_OK)
      {
         /* Layer 2: Ethernet header is present for all protocols */
         status = zl5011xAddEthernetHeader(layer2and3Header, par);

         /* Switch on the protocol stack, and populate the header structures as
           appropriate. */
         if (status == ZL5011X_OK)
         {
            switch (par->protocolType)
            {
               case ZL5011X_IP_UDP:
                  /* Layer 3: IP  */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddIPHeader(layer2and3Header, par);
                  }

                  /* Layer 4: UDP */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddUDPHeader(layer4and5Header, par);
                     udpEnable = ZL5011X_TRUE;
                  }

                  layer4and5Header->header.txHighLength = ZL5011X_PKT_UDP_HDR_LEN;
                  break;

               case ZL5011X_IP_UDP_PW:
                  /* Layer 3: IP  */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddIPHeader(layer2and3Header, par);
                  }

                  /* add the UDP + PW header fields */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddUDPHeader(layer4and5Header, par);
                     udpEnable = ZL5011X_TRUE;
                  }

                  layer4and5Header->header.txHighLength = ZL5011X_PKT_UDP_HDR_LEN + ZL5011X_PKT_PW_HDR_LEN;

                  pwStatusPos = layer4and5Header->header.txHighLength - ZL5011X_PKT_PW_HDR_LEN;
                  break;

               case ZL5011X_IP_PW_TS:
                  /* Layer 3: IP  */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddIPHeader(layer2and3Header, par);
                  }

                  /* add the PW + TS header fields
                     setup the PW seq no */
                  layer4and5Header->header.layer5SequenceNumEnable = ZL5011X_TRUE;
                  layer4and5Header->header.layer5SequenceNum16bit = ZL5011X_TRUE;
                  layer4and5Header->header.layer5SequenceNumPos = ZL5011X_PKT_PW_SEQ_POS;

                  /* setup the timestamp field for the TS header */
                  layer4and5Header->header.layer5TimestampEnable = ZL5011X_TRUE;
                  layer4and5Header->header.layer5TimestampIncrement = (Uint16T)par->rtpTimestampInc;
                  layer4and5Header->header.layer5TimestampFromWan = par->rtpTimestampFromWan;
                  layer4and5Header->header.layer5Timestamp32bit = ZL5011X_FALSE;
                  layer4and5Header->header.layer5TimestampPos = ZL5011X_PKT_PW_HDR_LEN + 0;

                  layer4and5Header->header.txHighLength = ZL5011X_PKT_PW_HDR_LEN + 2;

                  pwStatusPos = 0;
                  break;

               case ZL5011X_PW:
                  /* setup the PW seq no */
                  layer4and5Header->header.layer5SequenceNumEnable = ZL5011X_TRUE;
                  layer4and5Header->header.layer5SequenceNum16bit = ZL5011X_TRUE;
                  layer4and5Header->header.layer5SequenceNumPos = ZL5011X_PKT_PW_SEQ_POS;

                  layer4and5Header->header.txHighLength = ZL5011X_PKT_PW_HDR_LEN;

                  pwStatusPos = layer4and5Header->header.txHighLength - ZL5011X_PKT_PW_HDR_LEN;
                  break;

               case ZL5011X_IP_UDP_RTP:
                  /* Layer 3: IP  */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddIPHeader(layer2and3Header, par);
                  }

                  /* add the UDP + RTP + PW header fields */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddUDPHeader(layer4and5Header, par);
                     udpEnable = ZL5011X_TRUE;
                  }

                  layer4and5Header->header.txHighLength = ZL5011X_PKT_UDP_HDR_LEN + ZL5011X_PKT_RTP_HDR_LEN;
                  break;

               case ZL5011X_IP_UDP_RTP_PW:
               case ZL5011X_IP_UDP_RTP_PW_ALT:
                  /* Layer 3: IP  */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddIPHeader(layer2and3Header, par);
                  }

                  /* add the UDP + RTP + PW header fields */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddUDPHeader(layer4and5Header, par);
                     udpEnable = ZL5011X_TRUE;
                  }

                  layer4and5Header->header.txHighLength = ZL5011X_PKT_UDP_HDR_LEN +
                        ZL5011X_PKT_RTP_HDR_LEN + ZL5011X_PKT_PW_HDR_LEN;

                  pwStatusPos = layer4and5Header->header.txHighLength - ZL5011X_PKT_PW_HDR_LEN;
                  break;

               case ZL5011X_IP_UDP_L2TPV2_PW:
                  /* Layer 3: IP  */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddIPHeader(layer2and3Header, par);
                  }

                  /* add the UDP + L2TP + PW header fields */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddUDPHeader(layer4and5Header, par);
                     udpEnable = ZL5011X_TRUE;
                  }

                  layer4and5Header->header.txHighLength = ZL5011X_PKT_UDP_HDR_LEN +
                        ZL5011X_PKT_L2TP_HDR_LEN + ZL5011X_PKT_PW_HDR_LEN;

                  pwStatusPos = layer4and5Header->header.txHighLength - ZL5011X_PKT_PW_HDR_LEN;
                  break;

               case ZL5011X_IP_L2TPV3_PW:
                  /* Layer 3: IP  */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddIPHeader(layer2and3Header, par);
                  }

                  /* setup the PW seq no */
                  layer4and5Header->header.layer5SequenceNumEnable = ZL5011X_TRUE;
                  layer4and5Header->header.layer5SequenceNum16bit = ZL5011X_TRUE;
                  layer4and5Header->header.layer5SequenceNumPos = ZL5011X_PKT_L2TPV3_HDR_LEN + ZL5011X_PKT_PW_SEQ_POS;

                  layer4and5Header->header.txHighLength = ZL5011X_PKT_L2TPV3_HDR_LEN +
                        ZL5011X_PKT_PW_HDR_LEN;

                  if (par->enableL2TPCookie == ZL5011X_TRUE)
                  {
                     layer4and5Header->header.layer5SequenceNumPos += ZL5011X_PKT_L2TPV3_COOKIE_LEN;
                     layer4and5Header->header.txHighLength += ZL5011X_PKT_L2TPV3_COOKIE_LEN;

                  }

                  pwStatusPos = layer4and5Header->header.txHighLength - ZL5011X_PKT_PW_HDR_LEN;
                  break;

               case ZL5011X_IP_L2TPV3_RTP_PW:
                  /* Layer 3: IP  */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddIPHeader(layer2and3Header, par);
                  }

                  /* setup the seq no field for the RTP header */
                  layer4and5Header->header.layer5SequenceNumEnable = ZL5011X_TRUE;
                  layer4and5Header->header.layer5SequenceNum16bit = ZL5011X_TRUE;

                  if (par->rtpForceSeqNumber == ZL5011X_TRUE)
                  {
                     layer4and5Header->header.layer5SequenceNumPos = ZL5011X_PKT_L2TPV3_HDR_LEN + ZL5011X_PKT_RTP_SEQ_POS;
                  }
                  else
                  {
                     layer4and5Header->header.layer5SequenceNumPos = ZL5011X_PKT_L2TPV3_HDR_LEN + ZL5011X_PKT_RTP_HDR_LEN + ZL5011X_PKT_PW_SEQ_POS;
                  }

                  /* setup the timestamp field for the RTP header */
                  layer4and5Header->header.layer5TimestampEnable = ZL5011X_TRUE;
                  layer4and5Header->header.layer5TimestampIncrement = (Uint16T)par->rtpTimestampInc;
                  layer4and5Header->header.layer5TimestampFromWan = par->rtpTimestampFromWan;
                  layer4and5Header->header.layer5Timestamp32bit = ZL5011X_TRUE;
                  layer4and5Header->header.layer5TimestampPos = ZL5011X_PKT_L2TPV3_HDR_LEN + ZL5011X_PKT_RTP_TS_POS;

                  layer4and5Header->header.txHighLength = ZL5011X_PKT_L2TPV3_HDR_LEN +
                        ZL5011X_PKT_RTP_HDR_LEN + ZL5011X_PKT_PW_HDR_LEN;

                  if (par->enableL2TPCookie == ZL5011X_TRUE)
                  {
                     layer4and5Header->header.layer5SequenceNumPos += ZL5011X_PKT_L2TPV3_COOKIE_LEN;
                     layer4and5Header->header.txHighLength += ZL5011X_PKT_L2TPV3_COOKIE_LEN;
                     layer4and5Header->header.layer5TimestampPos += ZL5011X_PKT_L2TPV3_COOKIE_LEN;
                  }

                  pwStatusPos = layer4and5Header->header.txHighLength - ZL5011X_PKT_PW_HDR_LEN;
                  break;

               case ZL5011X_MPLS:
                  /* Layer 3: MPLS - place in the PE block to allow context switching */
                  layer4and5Header->header.txHighLength = ZL5011X_PKT_MPLS_HDR_LEN;
                  break;

               case ZL5011X_MPLS_PW:
                  /* Layer 3: MPLS - place in the PE block to allow context switching.
                     Setup the PW sequence number */
                  layer4and5Header->header.layer5SequenceNumEnable = ZL5011X_TRUE;
                  layer4and5Header->header.layer5SequenceNum16bit = ZL5011X_TRUE;
                  layer4and5Header->header.layer5SequenceNumPos = ZL5011X_PKT_MPLS_HDR_LEN + ZL5011X_PKT_PW_SEQ_POS;

                  layer4and5Header->header.txHighLength = ZL5011X_PKT_MPLS_HDR_LEN + ZL5011X_PKT_PW_HDR_LEN;

                  pwStatusPos = layer4and5Header->header.txHighLength - ZL5011X_PKT_PW_HDR_LEN;
                  break;

               case ZL5011X_MPLS_MPLS_PW:
                  /* Layer 3: MPLS  */
                  if (status == ZL5011X_OK)
                  {
                     status = zl5011xAddMPLSHeader(layer2and3Header, par);
                  }

                  /* Layer 3: MPLS - place in the PE block to allow context switching.
                     Setup the PW sequence number */
                  layer4and5Header->header.layer5SequenceNumEnable = ZL5011X_TRUE;
                  layer4and5Header->header.layer5SequenceNum16bit = ZL5011X_TRUE;
                  layer4and5Header->header.layer5SequenceNumPos = ZL5011X_PKT_MPLS_HDR_LEN + ZL5011X_PKT_PW_SEQ_POS;

                  layer4and5Header->header.txHighLength = ZL5011X_PKT_MPLS_HDR_LEN + ZL5011X_PKT_PW_HDR_LEN;

                  pwStatusPos = layer4and5Header->header.txHighLength - ZL5011X_PKT_PW_HDR_LEN;
                  break;

               case ZL5011X_MPLS_PW_RTP:
                  /* Layer 3: MPLS - place in the PE block to allow context switching.
                     Setup the PW sequence number */
                  layer4and5Header->header.layer5SequenceNumEnable = ZL5011X_TRUE;
                  layer4and5Header->header.layer5SequenceNum16bit = ZL5011X_TRUE;
                  if (par->rtpForceSeqNumber == ZL5011X_TRUE)
                  {
                     layer4and5Header->header.layer5SequenceNumPos = ZL5011X_PKT_MPLS_HDR_LEN + ZL5011X_PKT_PW_HDR_LEN + ZL5011X_PKT_RTP_SEQ_POS;
                  }
                  else
                  {
                     layer4and5Header->header.layer5SequenceNumPos = ZL5011X_PKT_MPLS_HDR_LEN + ZL5011X_PKT_PW_SEQ_POS;
                  }

                  /* setup the timestamp field for the RTP header */
                  layer4and5Header->header.layer5TimestampEnable = ZL5011X_TRUE;
                  layer4and5Header->header.layer5TimestampIncrement = (Uint16T)par->rtpTimestampInc;
                  layer4and5Header->header.layer5TimestampFromWan = par->rtpTimestampFromWan;
                  layer4and5Header->header.layer5Timestamp32bit = ZL5011X_TRUE;
                  layer4and5Header->header.layer5TimestampPos = ZL5011X_PKT_MPLS_HDR_LEN + ZL5011X_PKT_PW_HDR_LEN +
                        ZL5011X_PKT_RTP_TS_POS;

                  layer4and5Header->header.txHighLength = ZL5011X_PKT_MPLS_HDR_LEN + ZL5011X_PKT_PW_HDR_LEN +
                        ZL5011X_PKT_RTP_HDR_LEN;

                  pwStatusPos = layer4and5Header->header.txHighLength - ZL5011X_PKT_RTP_HDR_LEN - ZL5011X_PKT_PW_HDR_LEN;
                  break;

               case ZL5011X_CD:
                  layer4and5Header->header.txHighLength = 0;
                  status = zl5011xAddCDHeader(layer2and3Header, layer4and5Header, par, &cdPos);
                  cdEnable = ZL5011X_TRUE;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合色综合久久综合| 日韩一级二级三级精品视频| 国产日韩v精品一区二区| 裸体健美xxxx欧美裸体表演| 欧美精品三级日韩久久| 亚洲一区欧美一区| 欧美性猛交一区二区三区精品 | 久久久久亚洲综合| 另类小说图片综合网| 欧美成人精品高清在线播放| 美国av一区二区| 欧美日韩美女一区二区| 日韩激情在线观看| 欧美sm极限捆绑bd| 国模冰冰炮一区二区| 国产亚洲精品精华液| 成人白浆超碰人人人人| 日韩毛片视频在线看| 91欧美一区二区| 亚洲夂夂婷婷色拍ww47| 在线不卡欧美精品一区二区三区| 亚洲一区二区在线视频| 91精品国产综合久久久久久漫画| 亚洲精品乱码久久久久久日本蜜臀| 色拍拍在线精品视频8848| 亚洲一区二区三区四区在线| 欧美精品电影在线播放| 亚洲bdsm女犯bdsm网站| 欧美一区二区视频在线观看2022 | 国产精品福利一区| 91亚洲国产成人精品一区二区三 | 久久精品噜噜噜成人88aⅴ| 久久免费的精品国产v∧| 菠萝蜜视频在线观看一区| 一区二区三区高清| 日韩一级在线观看| 国产成人丝袜美腿| 一区二区久久久| 日韩欧美一二区| 不卡的av在线播放| 美日韩一区二区三区| 国产精品毛片大码女人| 欧美精品日日鲁夜夜添| 精品一区二区三区视频在线观看 | 欧美肥妇毛茸茸| 国产成人免费av在线| 亚洲一级不卡视频| 国产日韩在线不卡| 欧美日韩一区不卡| 国产成人精品亚洲午夜麻豆| 亚洲在线中文字幕| 久久老女人爱爱| 欧美精品123区| 不卡一二三区首页| 精品亚洲国内自在自线福利| 亚洲日本中文字幕区| 欧美色成人综合| 国产成人av电影免费在线观看| 亚洲午夜在线视频| 国产精品久久久久久久岛一牛影视| 91麻豆精品在线观看| 国产乱对白刺激视频不卡| 午夜精品久久久久影视| 国产精品每日更新在线播放网址| 日本高清不卡一区| 成人动漫一区二区在线| 久久精品国产色蜜蜜麻豆| 一区二区三区不卡视频| 国产精品另类一区| 久久综合色婷婷| 欧美一区二区三级| av资源站一区| 国产精品18久久久久久久久久久久| 视频一区二区三区中文字幕| 亚洲欧美一区二区在线观看| 国产精品你懂的在线欣赏| 国产精品激情偷乱一区二区∴| 中文字幕免费一区| 国产精品美女一区二区三区| 国产精品盗摄一区二区三区| 亚洲免费观看高清完整版在线 | 精品影院一区二区久久久| 蜜芽一区二区三区| 激情综合色播激情啊| 国产精品一区三区| 成人97人人超碰人人99| 在线一区二区三区| 制服丝袜日韩国产| 亚洲精品一区在线观看| 亚洲国产电影在线观看| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲永久精品大片| 免费观看成人鲁鲁鲁鲁鲁视频| 国产一区视频在线看| 国产不卡一区视频| 欧美伊人久久大香线蕉综合69| 欧美日韩高清一区二区不卡| 精品女同一区二区| 中文字幕一区二区三区四区| 亚洲成人福利片| 免费成人美女在线观看.| 国产成人在线影院 | 成人av午夜影院| 在线免费av一区| 精品区一区二区| 亚洲婷婷在线视频| 日韩不卡一区二区| www.色精品| 日韩手机在线导航| 综合av第一页| 美女视频一区二区三区| av不卡在线播放| 欧美欧美欧美欧美首页| 国产亚洲婷婷免费| 亚洲成人午夜影院| 国产成人在线视频网站| 欧美精品99久久久**| 中文字幕 久热精品 视频在线| 亚洲成人免费在线观看| 国产sm精品调教视频网站| 精品视频在线看| 中文字幕乱码日本亚洲一区二区| 五月天亚洲精品| 99国产精品国产精品久久| 日韩欧美一区中文| 亚洲一区二区三区三| 豆国产96在线|亚洲| 欧美一区二区三区视频| 亚洲精品久久久久久国产精华液| 精品亚洲porn| 91精品国产色综合久久不卡电影| 国产精品久久久久四虎| 精品一区二区三区在线观看 | 洋洋av久久久久久久一区| 国产老妇另类xxxxx| 欧美高清性hdvideosex| 亚洲丝袜精品丝袜在线| 国产福利一区二区三区视频| 日韩欧美一级片| 午夜欧美电影在线观看| 色综合网色综合| 国产精品久久久久天堂| 国产成人精品亚洲777人妖| 欧美一级专区免费大片| 性做久久久久久久免费看| 色综合久久综合网97色综合| 中日韩免费视频中文字幕| 国产一区二区三区在线观看免费| 日韩一区二区免费视频| 日韩精品一卡二卡三卡四卡无卡| 在线亚洲+欧美+日本专区| 亚洲嫩草精品久久| 91在线小视频| 国产精品成人网| va亚洲va日韩不卡在线观看| 欧美国产成人在线| 高清成人在线观看| 国产精品欧美精品| 国产一区二区女| 日韩一区二区在线免费观看| 午夜精品久久久久久久久| 在线观看国产日韩| 一区二区三区在线免费观看| 色综合色综合色综合色综合色综合 | 青青草成人在线观看| 欧美一区二区在线视频| 蜜桃av一区二区在线观看| 欧美v国产在线一区二区三区| 天天色综合天天| 日韩欧美一区二区视频| 狠狠网亚洲精品| 日本一区二区久久| av一区二区三区在线| 亚洲美女屁股眼交3| 欧美在线不卡视频| 午夜av区久久| 日韩欧美一级二级三级久久久| 国内外成人在线| 亚洲国产精品黑人久久久 | 欧美艳星brazzers| 日韩1区2区3区| 久久久亚洲高清| 99久久777色| 午夜视频久久久久久| 精品久久久三级丝袜| 粉嫩在线一区二区三区视频| 中文字幕亚洲不卡| 欧美日韩小视频| 精彩视频一区二区| 日韩理论片网站| 欧美高清一级片在线| 国产福利精品一区二区| 亚洲女爱视频在线| 美女精品一区二区| 欧美男男青年gay1069videost| 免费成人小视频| 一区视频在线播放| 这里只有精品99re| 成人精品高清在线| 午夜精品在线视频一区|