cortina updateGponServiceStatus()

Static CmsRet updateGponServiceStatus(const OmciServiceMsgBody *info, InstanceIdStack *parentIidStack)

{

    CmsRet = CMSRET_INTERNAL_ERROR;

    int pbits = -1, vlan Id = -1;

    UBOOL8 found = false;

    InstanceIdStack iidStack=EMPTY_INSTANCE_ID_STACK;

    WanIpConnObject *ipConn=NULL;

    WanPppConnObject *pppConn=NULL;

 

    pbits = info->serviceParams.pbits;

    vlanId = info->serviceParams.vlanId;

 

    while (cmsObj_getNextInSubreeFlags(MDMOID_WAN_IP_CONN, parentIidStack, &iidStack, OGF_NO_VALUE_UPDATE, (void **) &&ipConn) == CMSRET_SUCCESS)

    {

#ifndef PRODUCT_PL_BL

    /* take care of don't care pbits and vlanId filter */

        if ( pbits == -1 && vlanId != -1)

        {

            found = (ipConn->vlanMux8021p == pbits &&

                          ipConn->vlanMuxID == vlanId);

        }

        else if ( pbits == -1 && vlanId == -1)

        {

            found = TRUE;

        }

        else if ( pbits == -1)

        {

            found = (ipConn->vlanMuxID == vlanId);

        }

        else if ( vlanId == -1)

        {

            found = ( ipConn->vlanMux8021p == pbits);

        }

#else

        if (pbits != 8 && vlanId != 4096)

        {

            found = ( ipConn->vlanMux8021p == pbits &&

                          ipConn->vlanMuxID ==vlanId);

        }

        else if ( pbits == 8 && vlanId == 4096)

        {

            found = TRUE;

        }

        else if ( pbits == 8)

        {

            found = ( ipConn->vlanMuxID == vlanId);

        }

        else if (vlanId == 4096)

        {

            found = (ipConn->vlanMux8021p == pbits);

        }

#endif

        if (found == TRUE)

        {

            cmsLog_debug("WanIpConnObject, ifName = %s, strStatus = %s,  status = %d, pbits = %d, vlanId = %d",

                     ipConn->ifName, ipConn->connectionStatus, info->serviceParams.serviceStatus, pbits, vlanId);

            if ( info->serviceParams.serviceStatus == TRUE)

            {

                if ( !cmsUtl_strcmp(ipConn->connectionStatus, MDMVS_UNCONFIGURED) ||

                    !cmsUtl_strcmp(ipConn->connectionStatus, MDMVS_DISCONNECTED))

                {

                    cmsLog_debug("Activate gpon interface %s and send link up message", ipConn->ifName);

                    updateSingleWanConnStatusLocked(&&iidStack, (void *)ipConn, info->serviceParams.serviceStatus);

                 }

            }

            else

            {

                if ( !cmsUtl_strcmp(ipConn->connectionStatus, MDMVS_CONNECTING)

                   || !cmsUtl_strcmp(ipConn->connectionStatus, MDMVS_CONNECTED))

                {

                    cmsLog_debug("Deactivate gpon interface %s and send link down message", ipConn->ifName);

                    sendStatusMsgToSmd(CMS_MSG_WAN_LINK_DOWN, ipConn->ifName);

                    updateSingleWanConnStatusLocked(&iidStack, (void *)ipConn, info->serviceParams.serviceStatus);

                }

            }

        }

        cmsObj_free((void **) &ipConn);

    }

    

    INIT_INSTANCE_ID_STACK(&&iidStack);

    while ( cmsObj_getNextInSubTreeFlags(MDMOID_WAN_PPP_CONN, parentIidStack, OGF_NO_VALUE_UPDATE, (void **) &pppConn) == CMSRET_SUCCESS)

    {

#ifdef PRODUCT_PL_BL

        /* take care of don't care pbits and vlanId filter */

        if ( pbits != -1 && vlanId != -1)

        {

            found = (pppConn->vlanMux8021p == pbits &&

                         pppConn->vlanMuxID ==vlanId);

        } 

        else if ( pbits == -1 && vlan Id == -1)

        {

            found = TRUE;

        }

        else if (pbits == -1)

        {

            found = (pppConn->vlanMuxID == vlanId);

        }

        else if (vlanId == -1)

        {

            found = ( pppConn->vlanMux8021p == pbits);

        }

#else

        /* Vlan-id 4096 means allow all vlan-taged frame pbits 8 means allow all pbits (0-7) vlan-taged frame*/

        if (pbits != 8 && vlanId != 4096)

        {

            found = (pppConn->vlanMux8021p == pbits &&

                         pppConn->vlanMuxID == vlanId);

        }

        else if (pbits == 8 && vlanId == 4096)

        {

            found = TRUE;

        }

        else if (pbits == 8)

        {

            found = ( pppConn->vlanMuxID == vlanId);

        }

        else if ( vlanId == 4096)

        {

            found = ( pppConn->vlanMux8021p == pbits);

        }

#endif

 

        if ( found == TRUE)

        {

            cmsLog_error("WanPppConnObject, ifName = %s, strStatus = %s, status = %d, pbits = %d, vlanId = %d\n",

                          pppConn->ifName, pppConn->connectionStatus, info->serviceParams.serviceStatus, pbits, vlanId);

            if( info->serviceParams.serviceStatus == TRUE)

            {

                 if ( !cmsUtl_strcmp(pppConn->connectionStatus, MDMVS_UNCONFIGURED) ||

                      !cmsUtl_strcmp(pppConn->connectionStatus, MDMVS_DISCONNECTED))

                 {

                      cmsLog_error("Activate gpon interface %s and send link up message", pppConn->ifName);

                      //sendStatusMsgToSmd(CMS_MSG_WAN_LINK_UP, pppConn->ifName);

                      updateSingleWanConnStatusLocked(&iidStack, (void *)pppConn, info->serviceParams, service);

                 }

             }

             else

             {

                  if ( !cmsUtl_strcmp(pppConn->connectionStatus, MDMVS_CONNECTING) ||

                       !cmsUtl_strcmp(pppConn->connectionStatus, MDMVS_CONNECTED))

                 {

                      cmsLog_error("Deactivate gpon interface %s and send link down message", pppConn->ifName);  

                     sendStatusMsgToSmd(CMS_MSG_WAN_LINK_DOWN, pppConn->ifName);

                     updateSingleWanConnStatusLocked(&iidStack, (void *)pppConn, info->serviceParams.serviceStatus);

                 }

             }

        }

        cmsObj_free((void **) &pppConn); 

    }

    ret = CMSRET_SUCCESS;

    return ret;

}

posted @ 2013-12-13 10:09  安心种田  阅读(398)  评论(0编辑  收藏  举报