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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? zl5011xlanlanlink.c

?? Zalink50114----TDMoIP芯片驅(qū)動(dòng)源碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*******************************************************************************
*
*  File name:             zl5011xLanLanLink.c
*
*  Version:               7
*
*  Author:                APL
*
*  Date created:          26/07/2004
*
*  Copyright 2002, 2003, 2004, 2005, Zarlink Semiconductor Limited.
*  All rights reserved.
*
*  Module Description:
*    Supports Lan To Lan links between one ethernet port and another
*
*  Revision History:
*
*  Rev:  Date:       Author:  Comments:
*  1     26/07/2004  APL      New file
*  2     14/09/2004  APL      Minor tidying following review
*  3     27/09/2004  APL      Corrected a trace message
*  4     27/09/2004  APL      Need to set Wan Rx flow type when context created
*  5     04/10/2004  APL      Updated comments
*  6     11/04/2005  APL      Updated comment
*  7     21/07/2005  MRC      Corrected context state check
*
*******************************************************************************/

/*****************   INCLUDE FILES   ******************************************/
#include "zl5011xLanLanLink.h"
#include "zl5011xApi.h"
#include "zl5011xLan.h"

/*****************   COMPILE CONTROLS *****************************************/

/*****************   # DEFINES   **********************************************/

/*****************   MACROS and ENUMERATIONS   ********************************/

/*****************   DATA STRUCTURES   ****************************************/

/*****************   STATIC FUNCTION DECLARATIONS   ***************************/



/*****************   STATIC GLOBAL VARIABLES   ********************************/

/*****************   STATIC GLOBAL ACCESSORS     ******************************/

/*****************   STATIC FUNCTION DEFINITIONS   ****************************/

/*****************   EXPORTED GLOBAL VARIABLES   ******************************/

/*****************   EXPORTED FUNCTION DEFINTIONS   ***************************/

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

 Function:
   zl5011xLanLanContextCreateStructInit

 Description:
   Initialises structure used by zl5011xLanLanContextCreate function.

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

 Returns:
   zlStatusE

 Remarks:
   None

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

zlStatusE zl5011xLanLanContextCreateStructInit(zl5011xParamsS *zl5011xParams, zl5011xContextCreateS *par)
{
   zlStatusE status = ZL5011X_OK;

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

   if (status == ZL5011X_OK)
   {
      ZL5011X_TRACE(ZL5011X_TDM_FN_ID,
            "zl5011xLanLanContextCreateStructInit:",
            0, 0, 0, 0, 0, 0);

      /* Ensure all structure members are initialised */
      memset(par, 0, sizeof(zl5011xContextCreateS));

      par->context = ZL5011X_INVALID_CONTEXT;
      par->flow = ZL5011X_FLOW_PKT_PE_PKT;

      par->osExclusionEnable = ZL5011X_TRUE;

      /* All other parameters in the zl5011xContextCreateS structure are unused */
   }

   return status;
}

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

 Function:
    zl5011xLanLanContextCreate

 Description:
   Create a context for a particular data flow within the device.

 Inputs:
    contextNumber           The context number to create
    osExclusionEnable       Whether to use mutex locking to access the device structure
    flow                    Routing through the device corresponding to this context.
                            Normally this will be one of:
                                    ZL5011X_FLOW_PKT_PKT if no additional header is to be added
                                                      to the packet OR if only layer 2/3 header
                                                      will be added.
                                    ZL5011X_FLOW_PKT_PE_PKT (default) if layer 4/5 header must also be
                                                            modified.
                                    Note: the choice of default here is almost certainly wrong because
                                    most applications will want to set this to ZL5011X_FLOW_PKT_PKT.
                                    However, the default value here cannot be changed in order to maintain
                                    backward compatibility.
                            Lan-to-Lan contexts may also be used to create CPU-to-LAN flows
                            so the following values are also permitted.
                                    ZL5011X_FLOW_CPU_PKT
                                    ZL5011X_FLOW_CPU_PE_PKT
                            In some applications this flow value can be overridden later
                            by a specific call to zl5011xLanRxSetContextMatch.

    All other members of the zl5011xContextCreateS structure are unused.

 Outputs:
    None

 Returns:
    status            Any valid error code

 Remarks:
    None

*******************************************************************************/
zlStatusE zl5011xLanLanContextCreate(zl5011xParamsS *zl5011xParams,
                              zl5011xContextCreateS *par)
{
   zlStatusE status = ZL5011X_OK;
   zl5011xBooleanE gotDevice = ZL5011X_FALSE;

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

   /* Check device is running and therefore initialised OK */
   if (status == ZL5011X_OK)
   {
       status = ZL5011X_CHECK_RUNNING(zl5011xParams);
   }

   /* Check the flow parameter */
   if (status == ZL5011X_OK)
   {
      switch (par->flow)
      {
         case ZL5011X_FLOW_PKT_PE_PKT:
         case ZL5011X_FLOW_PKT_PKT:
         case ZL5011X_FLOW_CPU_PKT:
         case ZL5011X_FLOW_CPU_PE_PKT:
            /* These are permitted values */
            break;
         default:
            status = ZL5011X_PARAMETER_INVALID;
            break;
      }
   }

   /* Obtain exclusive access to the device if required */
   if ((status == ZL5011X_OK) && (par->osExclusionEnable == ZL5011X_TRUE))
   {
       /* get access to the device */
       status = zl5011xGetDevice(zl5011xParams, ZL5011X_GET_DEVICE_TIMEOUT_MODE);

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

   /* Check Lan context is valid */
   if (status == ZL5011X_OK)
   {
      status = zl5011xLanLanContextCheck(zl5011xParams, par->context, ZL5011X_CHECK_CONTEXT_NUMBER);
   }

   /* main function code starts */

   if (status == ZL5011X_OK)
   {
      ZL5011X_TRACE_CONTEXT(ZL5011X_LAN_FN_ID, par->context,
            "zl5011xLanLanContextCreate: ctxt %3d, flow %3d",
            par->context, par->flow, 0, 0, 0, 0);
   }

   /* If this context was previously used for either a Wan (TDM) Rx or Tx context then check that
      the context delete has completed */
   if (status == ZL5011X_OK)
   {
      /* Check to see whether a previous Wan Rx context teardown has now completed.  */
      if (zl5011xParams->wanIf.plaCurrent.context[par->context].state == ZL5011X_STATE_TEARING_DOWN)
      {
         status = zl5011xPlaCheckContextTeardown(zl5011xParams, par->context);

         /* if the teardown has completed, then reset the error code and
            continue */
         if (status == ZL5011X_CONTEXT_TEARDOWN_COMPLETE)
         {
            status = ZL5011X_OK;
         }
      }
   }

   if (status == ZL5011X_OK)
   {
      /* Check to see whether a previous Wan Tx context teardown has now completed.  */
      if (zl5011xParams->wanIf.tfmCurrent.context[par->context].state == ZL5011X_STATE_TEARING_DOWN)
      {
         status = zl5011xTfmCheckContextTeardown(zl5011xParams, par->context);

         /* if the teardown has completed, then reset the error code and
            continue */
         if (status == ZL5011X_CONTEXT_TEARDOWN_COMPLETE)
         {
            status = ZL5011X_OK;
         }
      }
   }

   /* Any context can be used either as a Lan-to-Lan context or as a Wan (TDM) context but not both.
      Therefore the context state for all contexts is stored in the Wan (TDM) part of the device structure.*/
   if (status == ZL5011X_OK)
   {
      /* check that the context is not currently in use */
      if ((zl5011xParams->wanIf.plaCurrent.context[par->context].state != ZL5011X_STATE_NOT_IN_USE) ||
          (zl5011xParams->wanIf.tfmCurrent.context[par->context].state != ZL5011X_STATE_NOT_IN_USE))
      {
         status = ZL5011X_CONTEXT_IN_USE;
      }
   }

   if (status == ZL5011X_OK)
   {
      /* Set both the wan Tx and Rx state parameters for this context to ensure it cannot
         be reused */
      zl5011xParams->wanIf.plaCurrent.context[par->context].state = ZL5011X_STATE_INIT;
      zl5011xParams->wanIf.tfmCurrent.context[par->context].state = ZL5011X_STATE_INIT;

      zl5011xParams->wanIf.wanTxFlow[par->context] = par->flow; /* Used by zl5011xLanRxSetContextMatch */
      zl5011xParams->wanIf.wanRxFlow[par->context] = par->flow; /* Used by zl5011xSetPacketTx */

      /* Set the flag to indicate this is a Lan-to-Lan context */
      zl5011xParams->packetIf.lanLanContext[par->context] = ZL5011X_TRUE;

      /* Clear the flag that indicates there is a pending classifier rule */
      zl5011xParams->packetIf.classifierEnablePending[par->context] = ZL5011X_FALSE;
   }

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

   return status;
}

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

 Function:
   zl5011xLanLanContextUpdateStructInit

 Description:
   Initialises structure used by zl5011xUpdateLanLanContext function.

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

 Returns:
   zlStatusE

 Remarks:
   None

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

zlStatusE zl5011xLanLanContextUpdateStructInit(zl5011xParamsS *zl5011xParams,
      zl5011xContextS *par)
{
   zlStatusE status = ZL5011X_OK;

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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩夫妻久久| 久久蜜桃av一区二区天堂| 国产一区二区三区免费在线观看| 国产精品三级av| 91精品国产综合久久国产大片| 成人精品电影在线观看| 理论电影国产精品| 亚洲小说欧美激情另类| 欧美高清一级片在线观看| 日韩一区二区三| 91麻豆蜜桃一区二区三区| 国产一区二区免费视频| 天天操天天综合网| 夜夜精品浪潮av一区二区三区| 国产日韩精品一区二区三区| 日韩三级中文字幕| 制服丝袜在线91| 欧美色图免费看| 色婷婷激情久久| 99热在这里有精品免费| 国产成人综合在线观看| 日本成人中文字幕在线视频| 亚洲国产日韩一级| 一区二区三区国产精华| 国产精品国产精品国产专区不蜜| 久久婷婷国产综合国色天香| 日韩欧美成人激情| 在线播放日韩导航| 欧美日韩二区三区| 欧美日韩五月天| 欧美中文字幕亚洲一区二区va在线| 99久久精品免费看国产免费软件| 国产成人免费视频| 国产91精品入口| 国产99久久久久| 国产精品99久久久久| 韩国女主播成人在线| 美女性感视频久久| 久久99热狠狠色一区二区| 蜜桃久久久久久| 美女www一区二区| 九色综合狠狠综合久久| 国内精品自线一区二区三区视频| 精品中文字幕一区二区小辣椒| 免费成人美女在线观看| 精品一区二区三区免费观看| 狠狠色丁香久久婷婷综合_中| 狠狠色丁香久久婷婷综| 成人一级片在线观看| 成人精品国产一区二区4080| 色综合一个色综合| 欧美美女黄视频| 欧美精品日韩一本| 日韩视频永久免费| 国产婷婷一区二区| 最新成人av在线| 五月婷婷久久综合| 国产在线国偷精品免费看| 国产成人亚洲综合色影视| 成人的网站免费观看| 欧洲日韩一区二区三区| 91精品国产乱| 国产日本欧洲亚洲| 亚洲一区二区三区美女| 久久国产精品一区二区| 懂色av一区二区三区免费看| 色国产综合视频| 欧美一区二区三区四区高清| 久久久av毛片精品| 亚洲欧美成人一区二区三区| 日韩国产精品久久久久久亚洲| 国产精品中文有码| 色婷婷亚洲精品| 精品久久国产97色综合| 亚洲码国产岛国毛片在线| 中文字幕字幕中文在线中不卡视频| 国产精品久久精品日日| 亚洲一区二区中文在线| 蜜桃av一区二区| 成人av网站免费| 欧美精品第1页| 久久久国产午夜精品| 夜夜揉揉日日人人青青一国产精品| 美美哒免费高清在线观看视频一区二区| 国产盗摄精品一区二区三区在线 | 麻豆成人在线观看| 国产一区二区在线看| 91女厕偷拍女厕偷拍高清| 欧美二区三区的天堂| 国产午夜精品一区二区| 偷拍亚洲欧洲综合| 成人午夜av影视| 日韩一级免费观看| 一区二区三区在线视频观看| 韩国v欧美v日本v亚洲v| 欧美久久免费观看| 国产精品高潮呻吟久久| 久久99精品国产.久久久久久| 日韩一区二区在线免费观看| 欧美激情一区不卡| 亚洲一区二区在线视频| 国产在线不卡视频| 欧美日韩免费视频| 中文字幕一区视频| 国产一区视频导航| 91精品国产综合久久久久久久久久| 国产精品久久久99| 国产在线一区观看| 日韩一级片在线观看| 伊人婷婷欧美激情| 国产精品888| 日韩三级免费观看| 日本伊人色综合网| 欧美日韩视频一区二区| 最新热久久免费视频| 国产91在线看| 精品粉嫩aⅴ一区二区三区四区| 偷拍一区二区三区| 欧美日韩视频在线一区二区| 一区二区高清免费观看影视大全| av色综合久久天堂av综合| 久久久不卡网国产精品二区| 国产真实乱对白精彩久久| 日韩欧美中文字幕公布| 婷婷丁香激情综合| 欧美熟乱第一页| 一区二区三区在线播| 成人app网站| 亚洲国产精品v| 风间由美一区二区av101| 欧美韩日一区二区三区四区| 国产精品中文有码| 日本一区二区三区在线观看| 国产成人免费网站| 国产三级一区二区| 波多野结衣亚洲| 亚洲欧美怡红院| 91免费国产视频网站| 亚洲精品成a人| 欧美欧美欧美欧美首页| 视频一区欧美日韩| 日韩三级av在线播放| 国产一区二区三区久久悠悠色av| 久久综合久久鬼色中文字| 国产精品一区二区免费不卡 | 久久精品国产亚洲5555| 日韩一级欧美一级| 国产精品一区二区在线看| 中文字幕av一区二区三区| 不卡视频一二三| 亚洲精品一二三| 欧美男同性恋视频网站| 美女在线视频一区| 久久色在线视频| av激情成人网| 亚洲国产一区在线观看| 日韩欧美一区二区三区在线| 国产真实乱子伦精品视频| 国产精品成人免费在线| 精品视频在线免费| 久草精品在线观看| 综合欧美亚洲日本| 欧美男女性生活在线直播观看| 理论片日本一区| 国产精品三级av在线播放| 欧美视频一区二| 国产一区二区免费在线| 亚洲免费大片在线观看| 欧美一二三四区在线| 成人免费高清视频| 亚洲成av人片在线观看| 日韩精品一区二区三区视频播放| 丁香激情综合国产| 婷婷激情综合网| 国产精品丝袜在线| 在线成人高清不卡| 国产不卡在线视频| 日韩影院精彩在线| 亚洲视频资源在线| 欧美mv和日韩mv的网站| 91电影在线观看| 国产精品18久久久久久久久久久久| 最新国产の精品合集bt伙计| 日韩区在线观看| 91福利精品第一导航| 国产精品99久久久久久宅男| 亚洲综合成人在线视频| 国产清纯白嫩初高生在线观看91 | 欧美日韩免费观看一区二区三区| 国产一区二区导航在线播放| 一区二区三区四区在线| 久久免费视频一区| 欧美日韩高清在线播放| 不卡的av网站| 午夜av一区二区| 成人欧美一区二区三区视频网页 | 国产中文字幕精品| 亚洲图片欧美综合| 亚洲国产激情av| 26uuu久久天堂性欧美|