Skip to content

Commit

Permalink
[nes]: BRIDGE changes ...
Browse files Browse the repository at this point in the history
  • Loading branch information
nes-repo committed Nov 25, 2014
1 parent 814a045 commit 58fba63
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 57 deletions.
72 changes: 53 additions & 19 deletions bridge/bridgeUtils.c
Original file line number Diff line number Diff line change
Expand Up @@ -647,57 +647,91 @@ ieee8021PbbVipRowStatus_update (

bool
ieee8021PbbVipToPipMappingRowStatus_update (
ieee8021PbbVipEntry_t *poIeee8021PbbVipEntry,
ieee8021PbbVipToPipMappingEntry_t *poEntry, uint8_t u8RowStatus)
{
register bool bRetCode = false;
register ieee8021PbbPipEntry_t *poIeee8021PbbPipEntry = NULL;

if (poIeee8021PbbVipEntry == NULL)

switch (u8RowStatus)
{
goto ieee8021PbbVipToPipMappingRowStatus_update_success;
case xRowStatus_notInService_c:
case xRowStatus_destroy_c:
if (poEntry->pOldEntry == NULL)
{
if ((poEntry->pOldEntry = xBuffer_alloc (sizeof (*poEntry->pOldEntry))) == NULL)
{
goto ieee8021PbbVipToPipMappingRowStatus_update_cleanup;
}
memcpy (poEntry->pOldEntry, poEntry, sizeof (*poEntry->pOldEntry));
}

if (u8RowStatus == xRowStatus_destroy_c)
{
poEntry->u32PipIfIndex = 0;
}
break;
}


if (poEntry->pOldEntry != NULL && poEntry->pOldEntry->u32PipIfIndex == poEntry->u32PipIfIndex)
{
goto ieee8021PbbVipToPipMappingRowStatus_update_success;
goto ieee8021PbbVipToPipMappingRowStatus_update_updateVip;
}

if (poEntry->pOldEntry == NULL || poEntry->pOldEntry->u32PipIfIndex == 0)
{
goto ieee8021PbbVipToPipMappingRowStatus_update_newPipIfIndex;
}

if ((poIeee8021PbbPipEntry = ieee8021PbbPipTable_getByIndex (poEntry->pOldEntry->u32PipIfIndex)) == NULL)
{
goto ieee8021PbbVipToPipMappingRowStatus_update_cleanup;
register ieee8021PbbPipEntry_t *poIeee8021PbbPipEntry = NULL;

if ((poIeee8021PbbPipEntry = ieee8021PbbPipTable_getByIndex (poEntry->pOldEntry->u32PipIfIndex)) != NULL)
{
xBitmap_setBitRev (poIeee8021PbbPipEntry->au8VipMap, poEntry->u32BridgeBasePort - 1, 0);
}
}

xBitmap_setBitRev (poIeee8021PbbPipEntry->au8VipMap, poEntry->u32BridgeBasePort - 1, 0);
poEntry->pOldEntry->u32PipIfIndex = 0;


ieee8021PbbVipToPipMappingRowStatus_update_newPipIfIndex:

if (poEntry->u32PipIfIndex == 0)
if (poEntry->u32PipIfIndex != 0)
{
goto ieee8021PbbVipToPipMappingRowStatus_update_cleanup;
register ieee8021PbbPipEntry_t *poIeee8021PbbPipEntry = NULL;

if ((poIeee8021PbbPipEntry = ieee8021PbbPipTable_getByIndex (poEntry->u32PipIfIndex)) == NULL)
{
goto ieee8021PbbVipToPipMappingRowStatus_update_cleanup;
}
xBitmap_setBitRev (poIeee8021PbbPipEntry->au8VipMap, poEntry->u32BridgeBasePort - 1, 1);
}

if (poIeee8021PbbVipEntry->u8RowStatus == xRowStatus_notInService_c)

switch (u8RowStatus)
{
if ((poIeee8021PbbPipEntry = ieee8021PbbPipTable_getByIndex (poEntry->u32PipIfIndex)) == NULL)
case xRowStatus_active_c:
case xRowStatus_destroy_c:
if (poEntry->pOldEntry != NULL)
{
goto ieee8021PbbVipToPipMappingRowStatus_update_cleanup;
xBuffer_free (poEntry->pOldEntry);
poEntry->pOldEntry = NULL;
}
break;
}


ieee8021PbbVipToPipMappingRowStatus_update_updateVip:
{
register ieee8021PbbVipEntry_t *poIeee8021PbbVipEntry = NULL;

/* TODO */

xBitmap_setBitRev (poIeee8021PbbPipEntry->au8VipMap, poEntry->u32BridgeBasePort - 1, 1);
poIeee8021PbbVipEntry->u32PipIfIndex = poEntry->u32PipIfIndex;
if ((poIeee8021PbbVipEntry = ieee8021PbbVipTable_getByIndex (poEntry->u32BridgeBasePortComponentId, poEntry->u32BridgeBasePort)) != NULL &&
!ieee8021PbbVipRowStatus_handler (poIeee8021PbbVipEntry, u8RowStatus | xRowStatus_fromParent_c))
{
goto ieee8021PbbVipToPipMappingRowStatus_update_cleanup;
}
}

ieee8021PbbVipToPipMappingRowStatus_update_success:

bRetCode = true;

Expand Down
1 change: 0 additions & 1 deletion bridge/bridgeUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ bool
ieee8021PbbVipEntry_t *poEntry, uint8_t u8RowStatus);
bool
ieee8021PbbVipToPipMappingRowStatus_update (
ieee8021PbbVipEntry_t *poIeee8021PbbVipEntry,
ieee8021PbbVipToPipMappingEntry_t *poEntry, uint8_t u8RowStatus);


Expand Down
43 changes: 6 additions & 37 deletions bridge/ieee8021PbbMib.c
Original file line number Diff line number Diff line change
Expand Up @@ -3361,10 +3361,8 @@ bool
ieee8021PbbVipToPipMappingRowStatus_handler (
ieee8021PbbVipToPipMappingEntry_t *poEntry, uint8_t u8RowStatus)
{
register bool bRetCode = false;
register uint8_t u8RealStatus = u8RowStatus & xRowStatus_mask_c;
register ieee8021PbbVipEntry_t *poIeee8021PbbVipEntry = NULL;

poIeee8021PbbVipEntry = ieee8021PbbVipTable_getByIndex (poEntry->u32BridgeBasePortComponentId, poEntry->u32BridgeBasePort);

if (poEntry->u8RowStatus == u8RealStatus)
{
Expand All @@ -3386,38 +3384,16 @@ ieee8021PbbVipToPipMappingRowStatus_handler (
goto ieee8021PbbVipToPipMappingRowStatus_handler_cleanup;
}

if (!(u8RowStatus & xRowStatus_fromParent_c) && (poIeee8021PbbVipEntry == NULL || poIeee8021PbbVipEntry->u8RowStatus != xRowStatus_active_c))
{
u8RealStatus = xRowStatus_notReady_c;
}

if (!ieee8021PbbVipToPipMappingRowStatus_update (poIeee8021PbbVipEntry, poEntry, u8RealStatus))
if (!ieee8021PbbVipToPipMappingRowStatus_update (poEntry, u8RealStatus))
{
goto ieee8021PbbVipToPipMappingRowStatus_handler_cleanup;
}

poEntry->u8RowStatus = u8RealStatus;

if (poEntry->pOldEntry != NULL)
{
xBuffer_free (poEntry->pOldEntry);
poEntry->pOldEntry = NULL;
}
break;

case xRowStatus_notInService_c:
if (poEntry->pOldEntry != NULL ||
(poEntry->pOldEntry = xBuffer_alloc (sizeof (*poEntry->pOldEntry))) == NULL)
{
goto ieee8021PbbVipToPipMappingRowStatus_handler_cleanup;
}

if (poEntry->pOldEntry != NULL)
{
memcpy (poEntry->pOldEntry, poEntry, sizeof (*poEntry->pOldEntry));
}

if (!ieee8021PbbVipToPipMappingRowStatus_update (poIeee8021PbbVipEntry, poEntry, u8RealStatus))
if (!ieee8021PbbVipToPipMappingRowStatus_update (poEntry, u8RealStatus))
{
goto ieee8021PbbVipToPipMappingRowStatus_handler_cleanup;
}
Expand All @@ -3434,13 +3410,7 @@ ieee8021PbbVipToPipMappingRowStatus_handler (
break;

case xRowStatus_destroy_c:
if (poEntry->pOldEntry != NULL)
{
xBuffer_free (poEntry->pOldEntry);
poEntry->pOldEntry = NULL;
}

if (!ieee8021PbbVipToPipMappingRowStatus_update (poIeee8021PbbVipEntry, poEntry, u8RealStatus))
if (!ieee8021PbbVipToPipMappingRowStatus_update (poEntry, u8RealStatus))
{
goto ieee8021PbbVipToPipMappingRowStatus_handler_cleanup;
}
Expand All @@ -3451,12 +3421,11 @@ ieee8021PbbVipToPipMappingRowStatus_handler (

ieee8021PbbVipToPipMappingRowStatus_handler_success:

return true;

bRetCode = true;

ieee8021PbbVipToPipMappingRowStatus_handler_cleanup:

return u8RowStatus & xRowStatus_fromParent_c;
return bRetCode || (u8RowStatus & xRowStatus_fromParent_c);
}

/* example iterator hook routines - using 'getNext' to do most of the work */
Expand Down

0 comments on commit 58fba63

Please sign in to comment.