Skip to content

Commit

Permalink
[nes]: IF + ETHERNET changes ...
Browse files Browse the repository at this point in the history
  • Loading branch information
nes-repo committed May 11, 2015
1 parent 7b5b435 commit db59f94
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 46 deletions.
102 changes: 59 additions & 43 deletions ethernet/ieee8021BridgeMib.c
Original file line number Diff line number Diff line change
Expand Up @@ -1300,11 +1300,11 @@ ieee8021BridgeBasePortTable_createHier (ieee8021BridgeBaseEntry_t *poComponent,
goto ieee8021BridgeBasePortTable_createHier_cleanup;
}

if (ieee8021BridgeTpPortTable_getByIndex (poEntry->u32ComponentId, poEntry->u32Port) == NULL &&
ieee8021BridgeTpPortTable_createExt (poEntry->u32ComponentId, poEntry->u32Port) == NULL)
{
goto ieee8021BridgeBasePortTable_createHier_cleanup;
}
// if (ieee8021BridgeTpPortTable_getByIndex (poEntry->u32ComponentId, poEntry->u32Port) == NULL &&
// ieee8021BridgeTpPortTable_createExt (poEntry->u32ComponentId, poEntry->u32Port) == NULL)
// {
// goto ieee8021BridgeBasePortTable_createHier_cleanup;
// }

if (ieee8021BridgePortPriorityTable_getByIndex (poEntry->u32ComponentId, poEntry->u32Port) == NULL &&
ieee8021BridgePortPriorityTable_createExt (poEntry->u32ComponentId, poEntry->u32Port) == NULL)
Expand Down Expand Up @@ -1372,7 +1372,7 @@ ieee8021BridgeBasePortTable_removeHier (ieee8021BridgeBaseEntry_t *poComponent,

if ((poIeee8021BridgeTpPortEntry = ieee8021BridgeTpPortTable_getByIndex (poEntry->u32ComponentId, poEntry->u32Port)) != NULL)
{
ieee8021BridgeTpPortTable_removeExt (poIeee8021BridgeTpPortEntry);
// ieee8021BridgeTpPortTable_removeExt (poIeee8021BridgeTpPortEntry);
}


Expand Down Expand Up @@ -2856,54 +2856,70 @@ ieee8021BridgeTpPortTable_removeEntry (ieee8021BridgeTpPortEntry_t *poEntry)
return;
}

ieee8021BridgeTpPortEntry_t *
ieee8021BridgeTpPortTable_createExt (
uint32_t u32ComponentId,
uint32_t u32Port)
bool
ieee8021BridgeTpPortStatus_handler (
uint32_t u32IfIndex, uint8_t *pu8AdminFlags, bool bLocked)
{
ieee8021BridgeTpPortEntry_t *poEntry = NULL;
register bool bRetCode = false;
register ieee8021BridgePhyData_t *poPhyData = NULL;
register ieee8021BridgeBaseEntry_t *poIeee8021BridgeBaseEntry = NULL;
register bool bMacLearn = xBitmap_getBitRev (pu8AdminFlags, neIfAdminFlags_macLearn_c);
register bool bMacFwd = xBitmap_getBitRev (pu8AdminFlags, neIfAdminFlags_macFwd_c);
register bool bPhyLocked = false;
register bool bBridgeLocked = false;

poEntry = ieee8021BridgeTpPortTable_createEntry (
u32ComponentId,
u32Port);
if (poEntry == NULL)

if (u32IfIndex == 0 || pu8AdminFlags == NULL || (bMacLearn && !bMacFwd))
{
return NULL;
goto ieee8021BridgeTpPortStatus_handler_cleanup;
}

if (!ieee8021BridgeTpPortTable_createHier (poEntry))

if (!bLocked)
{
ieee8021BridgeTpPortTable_removeEntry (poEntry);
return NULL;
ieee8021BridgePhyData_rdLock ();
bPhyLocked = true;
}

return poEntry;
}

bool
ieee8021BridgeTpPortTable_removeExt (ieee8021BridgeTpPortEntry_t *poEntry)
{
if (!ieee8021BridgeTpPortTable_removeHier (poEntry))
if ((poPhyData = ieee8021BridgePhyData_getByIndex (u32IfIndex, 0)) == NULL ||
poPhyData->u32ComponentId == 0 || poPhyData->u32Port == 0)
{
return false;
goto ieee8021BridgeTpPortStatus_handler_success;
}
ieee8021BridgeTpPortTable_removeEntry (poEntry);

return true;
}

bool
ieee8021BridgeTpPortTable_createHier (
ieee8021BridgeTpPortEntry_t *poEntry)
{
return true;
}

bool
ieee8021BridgeTpPortTable_removeHier (
ieee8021BridgeTpPortEntry_t *poEntry)
{
return true;
ieee8021Bridge_wrLock ();
bBridgeLocked = true;

if ((poIeee8021BridgeBaseEntry = ieee8021BridgeBaseTable_getByIndex (poPhyData->u32ComponentId)) == NULL)
{
goto ieee8021BridgeTpPortStatus_handler_cleanup;
}

ieee8021BridgeBase_wrLock (poIeee8021BridgeBaseEntry);


if (!ieee8021BridgeTpPortTable_handler (poIeee8021BridgeBaseEntry, poPhyData, bMacLearn, bMacFwd))
{
goto ieee8021BridgeTpPortStatus_handler_cleanup;
}

ieee8021BridgeTpPortStatus_handler_success:

if (poPhyData != NULL)
{
xBitmap_setBitRev (poPhyData->au8AdminFlags, neIfAdminFlags_macLearn_c, bMacLearn);
xBitmap_setBitRev (poPhyData->au8AdminFlags, neIfAdminFlags_macFwd_c, bMacFwd);
}

bRetCode = true;

ieee8021BridgeTpPortStatus_handler_cleanup:

poIeee8021BridgeBaseEntry != NULL ? ieee8021BridgeBase_unLock (poIeee8021BridgeBaseEntry): false;
bBridgeLocked ? ieee8021Bridge_unLock (): false;
bPhyLocked ? ieee8021BridgePhyData_rdLock (): false;

return bRetCode;
}

bool
Expand Down
1 change: 1 addition & 0 deletions ethernet/ieee8021BridgeMib.h
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,7 @@ typedef struct ieee8021BridgePhyData_t
uint32_t u32Port;
uint8_t au8TypeCapabilities[2];
size_t u16TypeCapabilities_len; /* # of uint8_t elements */
uint8_t au8AdminFlags[3];

xBTree_Node_t oIf_BTreeNode;
xBTree_Node_t oPhy_BTreeNode;
Expand Down
2 changes: 1 addition & 1 deletion if/ifMIB.c
Original file line number Diff line number Diff line change
Expand Up @@ -2723,7 +2723,7 @@ neIfTable_createEntry (
/*poEntry->au8Name = ""*/;
/*poEntry->au8Descr = ""*/;
/*poEntry->au8PhysAddress = 0*/;
xBitmap_setBitsRev (poEntry->au8AdminFlags, 4, 1, neIfAdminFlags_speed100Mbps_c, neIfAdminFlags_autoNeg_c, neIfAdminFlags_loopDetect_c, neIfAdminFlags_macFwd_c);
xBitmap_setBitsRev (poEntry->au8AdminFlags, 4, 1, neIfAdminFlags_speed100Mbps_c, neIfAdminFlags_autoNeg_c, neIfAdminFlags_macLearn_c, neIfAdminFlags_macFwd_c);
poEntry->u8RowStatus = xRowStatus_notInService_c;
poEntry->u8StorageType = neIfStorageType_volatile_c;

Expand Down
4 changes: 2 additions & 2 deletions if/ifMIB.h
Original file line number Diff line number Diff line change
Expand Up @@ -1003,7 +1003,7 @@ enum
neIfAdminFlags_xCat_c = 16,
neIfAdminFlags_xCatVc_c = 17,
neIfAdminFlags_lag_c = 18,
neIfAdminFlags_loopDetect_c = 19,
neIfAdminFlags_macLearn_c = 19,
neIfAdminFlags_macFwd_c = 20,
neIfAdminFlags_vlanFwd_c = 21,
neIfAdminFlags_pbbFwd_c = 22,
Expand Down Expand Up @@ -1031,7 +1031,7 @@ enum
neIfOperFlags_xCat_c = 16,
neIfOperFlags_xCatVc_c = 17,
neIfOperFlags_lag_c = 18,
neIfOperFlags_loopDetect_c = 19,
neIfOperFlags_macLearn_c = 19,
neIfOperFlags_macFwd_c = 20,
neIfOperFlags_vlanFwd_c = 21,
neIfOperFlags_pbbFwd_c = 22,
Expand Down

0 comments on commit db59f94

Please sign in to comment.