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

📄 m2ppplibtest.c

📁 这是全套的PPP协议的源码
💻 C
字号:
/* m2pppLibTest.c *//* Copyright (C) 2003 Wind River Systems, Inc. *//*****************************************/STATUS m2pppLibTestPopulate    (    UINT32 nn,  /* number of nodes */    UINT32 step         )    {    int i;    M2_PPP_LIB_SEM_TAKE(m2pppLibSem);    for (i=1; i<nn+1; i++)        {        m2pppInterfaceRegister(i*step,NULL);        }    printf("We attempted to register %u nodes ", nn);    printf("with indices from %u to %u with step %u\n", step, nn*step, step);    M2_PPP_LIB_SEM_GIVE(m2pppLibSem);    return OK;    }/*****************************************/STATUS m2pppInterfaceShow    (    UINT32  ifIndex    )    {    M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY  keyEntry;    M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY *    retrievedEntryPtr;    PFW_STACK_OBJ * stackObj = NULL;    M2_PPP_LIB_SEM_TAKE(m2pppLibSem);    POPULATE_M2_PPP_KEY_ENTRY;    retrievedEntryPtr = avlSearch   (                                    m2pppIfIndexToStackObjTree,                                     (GENERIC_ARGUMENT)((void *)&keyEntry),                                    compareMain                                    );    if  (retrievedEntryPtr != NULL)        {        printf("A node with ifIndex = %u exists on the tree\n", retrievedEntryPtr->ifIndex);        }    else        {        printf("The tree does not have a node with ifIndex = %u\n", ifIndex);        }    printf("We will call m2pppInterfaceStackObjGet\n");    if  (m2pppInterfaceStackObjGet(ifIndex, &stackObj) != OK)        {        printf("ERROR was returned by m2pppInterfaceStackObjGet\n");        }    else        {        printf("The returned stackObj value is: %p\n", stackObj);        }    M2_PPP_LIB_SEM_GIVE(m2pppLibSem);    return OK;    }/*****************************************/STATUS m2pppNextInterfaceShow    (    UINT32  ifIndex    )    {    M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY  keyEntry;    M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY *    retrievedEntryPtr;    PFW_STACK_OBJ * stackObj = NULL;    M2_PPP_LIB_SEM_TAKE(m2pppLibSem);    POPULATE_M2_PPP_KEY_ENTRY;    retrievedEntryPtr = avlSuccessorGet (                                           m2pppIfIndexToStackObjTree,                                         (GENERIC_ARGUMENT)((void *)&keyEntry),                                        compareMain                                        );    if  (retrievedEntryPtr != NULL)        {        printf("The tree node with ifIndex = %u has minimal key > %u\n", retrievedEntryPtr->ifIndex, ifIndex);        }    else        {        printf("The tree does not have a node with ifIndex > %u \n", ifIndex);        }    printf("We will call m2pppInterfaceStackObjGet\n");    if  (m2pppInterfaceStackObjGet(ifIndex, &stackObj) != OK)        {        printf("ERROR was returned by m2pppNextInterfaceStackObjGet\n");        }    else        {        printf("The returned stackObj value is: %p\n", stackObj);        };    M2_PPP_LIB_SEM_GIVE(m2pppLibSem);    return OK;    }/*****************************************/STATUS m2pppPreviousInterfaceShow    (    UINT32  ifIndex    )    {    M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY  keyEntry;    M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY *    retrievedEntryPtr;    PFW_STACK_OBJ * stackObj = NULL;    M2_PPP_LIB_SEM_TAKE(m2pppLibSem);    POPULATE_M2_PPP_KEY_ENTRY;    retrievedEntryPtr = avlPredecessorGet   (                                           m2pppIfIndexToStackObjTree,                                         (GENERIC_ARGUMENT)((void *)&keyEntry),                                        compareMain                                        );    if  (retrievedEntryPtr != NULL)        {        printf("The tree node with ifIndex = %u has maximal key < %u\n", retrievedEntryPtr->ifIndex, ifIndex);        }    else        {        printf("The tree does not have a node with ifIndex < %u \n", ifIndex);        }    printf("We will call m2pppInterfaceStackObjGet\n");    if  (m2pppInterfaceStackObjGet(ifIndex, &stackObj) != OK)        {        printf("ERROR was returned by m2pppPreviousInterfaceStackObjGet\n");        }    else        {        printf("The returned stackObj value is: %p\n", stackObj);        };    M2_PPP_LIB_SEM_GIVE(m2pppLibSem);    return OK;    }/*****************************************/void printNodeData(void * nodep)    {    M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY * aux;    aux = (M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY *)nodep;    printf("(ht = %3d,key = %3d,",aux->avlBase.height, aux->ifIndex);    if  (aux->avlBase.left != NULL)        {        printf("left = %3d,", ((M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY *)                       (aux->avlBase.left))->ifIndex);        }    else        {        printf("left =   -,");        }    if  (aux->avlBase.right != NULL)        {        printf("right = %3d)\n", ((M2_PPP_IF_INDEX_TO_STACK_OBJ_ENTRY *)                          (aux->avlBase.right))->ifIndex);        }    else        {        printf("right =   -)\n");        }    }/*****************************************/STATUS m2pppLibPrintClear(void)    {    M2_PPP_LIB_SEM_TAKE(m2pppLibSem);    if  (avlTreePrintErase(m2pppIfIndexToStackObjTreePtr, printNodeData) != OK)        {        printf("Tree memory deallocation failed\n");        M2_PPP_LIB_SEM_GIVE(m2pppLibSem);                return ERROR;        }    else        {        if  (semDelete(m2pppLibSem) != OK)            {            printf("semDelete failed; m2pppLibSem is likely invalid\n");            return ERROR;            }        else            {            m2pppLibSem = NULL;			return OK;            }        }    }    /*****************************************/STATUS m2pppLibPrint(void)    {    M2_PPP_LIB_SEM_TAKE(m2pppLibSem);    if  (NULL == *m2pppIfIndexToStackObjTreePtr)        {        printf("The ifIndexToStackObjTree has no nodes\n");        M2_PPP_LIB_SEM_GIVE(m2pppLibSem);                return OK;                }    else if  (avlTreePrint(m2pppIfIndexToStackObjTreePtr, printNodeData) != OK)        {        printf("avlTreePrint did not return OK\n");        M2_PPP_LIB_SEM_GIVE(m2pppLibSem);                return ERROR;        }    else        {        M2_PPP_LIB_SEM_GIVE(m2pppLibSem);                return OK;        }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -