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 18, 2014
1 parent cf934c4 commit ac1ccc9
Show file tree
Hide file tree
Showing 2 changed files with 117 additions and 0 deletions.
103 changes: 103 additions & 0 deletions bridge/ieee8021PbbMib.c
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,21 @@ ieee8021PbbVipTable_BTreeNodeCmp (
(pEntry1->u32BridgeBasePortComponentId == pEntry2->u32BridgeBasePortComponentId && pEntry1->u32BridgeBasePort == pEntry2->u32BridgeBasePort) ? 0: 1;
}

static int8_t
ieee8021PbbVipTable_ISid_BTreeNodeCmp (
xBTree_Node_t *pNode1, xBTree_Node_t *pNode2, xBTree_t *pBTree)
{
register ieee8021PbbVipEntry_t *pEntry1 = xBTree_entry (pNode1, ieee8021PbbVipEntry_t, oISid_BTreeNode);
register ieee8021PbbVipEntry_t *pEntry2 = xBTree_entry (pNode2, ieee8021PbbVipEntry_t, oISid_BTreeNode);

return
(pEntry1->u32ChassisId < pEntry2->u32ChassisId) ||
(pEntry1->u32ChassisId == pEntry2->u32ChassisId && pEntry1->u32ISid < pEntry2->u32ISid) ? -1:
(pEntry1->u32ChassisId == pEntry2->u32ChassisId && pEntry1->u32ISid == pEntry2->u32ISid) ? 0: 1;
}

xBTree_t oIeee8021PbbVipTable_BTree = xBTree_initInline (&ieee8021PbbVipTable_BTreeNodeCmp);
xBTree_t oIeee8021PbbVipTable_ISid_BTree = xBTree_initInline (&ieee8021PbbVipTable_ISid_BTreeNodeCmp);

/* create a new row in the (unsorted) table */
ieee8021PbbVipEntry_t *
Expand Down Expand Up @@ -362,6 +376,56 @@ ieee8021PbbVipTable_getNextIndex (
return xBTree_entry (poNode, ieee8021PbbVipEntry_t, oBTreeNode);
}

ieee8021PbbVipEntry_t *
ieee8021PbbVipTable_ISid_getByIndex (
uint32_t u32ChassisId,
uint32_t u32ISid)
{
register ieee8021PbbVipEntry_t *poTmpEntry = NULL;
register xBTree_Node_t *poNode = NULL;

if ((poTmpEntry = xBuffer_cAlloc (sizeof (*poTmpEntry))) == NULL)
{
return NULL;
}

poTmpEntry->u32ChassisId = u32ChassisId;
poTmpEntry->u32ISid = u32ISid;
if ((poNode = xBTree_nodeFind (&poTmpEntry->oISid_BTreeNode, &oIeee8021PbbVipTable_ISid_BTree)) == NULL)
{
xBuffer_free (poTmpEntry);
return NULL;
}

xBuffer_free (poTmpEntry);
return xBTree_entry (poNode, ieee8021PbbVipEntry_t, oISid_BTreeNode);
}

ieee8021PbbVipEntry_t *
ieee8021PbbVipTable_ISid_getNextIndex (
uint32_t u32ChassisId,
uint32_t u32ISid)
{
register ieee8021PbbVipEntry_t *poTmpEntry = NULL;
register xBTree_Node_t *poNode = NULL;

if ((poTmpEntry = xBuffer_cAlloc (sizeof (*poTmpEntry))) == NULL)
{
return NULL;
}

poTmpEntry->u32ChassisId = u32ChassisId;
poTmpEntry->u32ISid = u32ISid;
if ((poNode = xBTree_nodeFindNext (&poTmpEntry->oISid_BTreeNode, &oIeee8021PbbVipTable_ISid_BTree)) == NULL)
{
xBuffer_free (poTmpEntry);
return NULL;
}

xBuffer_free (poTmpEntry);
return xBTree_entry (poNode, ieee8021PbbVipEntry_t, oISid_BTreeNode);
}

/* remove a row from the table */
void
ieee8021PbbVipTable_removeEntry (ieee8021PbbVipEntry_t *poEntry)
Expand Down Expand Up @@ -1228,7 +1292,21 @@ ieee8021PbbPipTable_BTreeNodeCmp (
(pEntry1->u32IfIndex == pEntry2->u32IfIndex) ? 0: 1;
}

static int8_t
ieee8021PbbPipTable_Comp_BTreeNodeCmp (
xBTree_Node_t *pNode1, xBTree_Node_t *pNode2, xBTree_t *pBTree)
{
register ieee8021PbbPipEntry_t *pEntry1 = xBTree_entry (pNode1, ieee8021PbbPipEntry_t, oComp_BTreeNode);
register ieee8021PbbPipEntry_t *pEntry2 = xBTree_entry (pNode2, ieee8021PbbPipEntry_t, oComp_BTreeNode);

return
(pEntry1->u32IComponentId < pEntry2->u32IComponentId) ||
(pEntry1->u32IComponentId == pEntry2->u32IComponentId && pEntry1->u32IfIndex < pEntry2->u32IfIndex) ? -1:
(pEntry1->u32IComponentId == pEntry2->u32IComponentId && pEntry1->u32IfIndex == pEntry2->u32IfIndex) ? 0: 1;
}

xBTree_t oIeee8021PbbPipTable_BTree = xBTree_initInline (&ieee8021PbbPipTable_BTreeNodeCmp);
xBTree_t oIeee8021PbbPipTable_Comp_BTree = xBTree_initInline (&ieee8021PbbPipTable_Comp_BTreeNodeCmp);

/* create a new row in the (unsorted) table */
ieee8021PbbPipEntry_t *
Expand Down Expand Up @@ -1307,6 +1385,31 @@ ieee8021PbbPipTable_getNextIndex (
return xBTree_entry (poNode, ieee8021PbbPipEntry_t, oBTreeNode);
}

ieee8021PbbPipEntry_t *
ieee8021PbbPipTable_Comp_getNextIndex (
uint32_t u32IComponentId,
uint32_t u32IfIndex)
{
register ieee8021PbbPipEntry_t *poTmpEntry = NULL;
register xBTree_Node_t *poNode = NULL;

if ((poTmpEntry = xBuffer_cAlloc (sizeof (*poTmpEntry))) == NULL)
{
return NULL;
}

poTmpEntry->u32IComponentId = u32IComponentId;
poTmpEntry->u32IfIndex = u32IfIndex;
if ((poNode = xBTree_nodeFindNext (&poTmpEntry->oComp_BTreeNode, &oIeee8021PbbPipTable_Comp_BTree)) == NULL)
{
xBuffer_free (poTmpEntry);
return NULL;
}

xBuffer_free (poTmpEntry);
return xBTree_entry (poNode, ieee8021PbbPipEntry_t, oComp_BTreeNode);
}

/* remove a row from the table */
void
ieee8021PbbPipTable_removeEntry (ieee8021PbbPipEntry_t *poEntry)
Expand Down
14 changes: 14 additions & 0 deletions bridge/ieee8021PbbMib.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,10 +121,13 @@ typedef struct ieee8021PbbVipEntry_t
uint8_t u8RowStatus;
int32_t i32EnableConnectionId;

uint32_t u32ChassisId;
xBTree_Node_t oBTreeNode;
xBTree_Node_t oISid_BTreeNode;
} ieee8021PbbVipEntry_t;

extern xBTree_t oIeee8021PbbVipTable_BTree;
extern xBTree_t oIeee8021PbbVipTable_ISid_BTree;

/* ieee8021PbbVipTable table mapper */
void ieee8021PbbVipTable_init (void);
Expand All @@ -137,6 +140,12 @@ ieee8021PbbVipEntry_t * ieee8021PbbVipTable_getByIndex (
ieee8021PbbVipEntry_t * ieee8021PbbVipTable_getNextIndex (
uint32_t u32BridgeBasePortComponentId,
uint32_t u32BridgeBasePort);
ieee8021PbbVipEntry_t * ieee8021PbbVipTable_ISid_getByIndex (
uint32_t u32ChassisId,
uint32_t u32ISid);
ieee8021PbbVipEntry_t * ieee8021PbbVipTable_ISid_getNextIndex (
uint32_t u32ChassisId,
uint32_t u32ISid);
void ieee8021PbbVipTable_removeEntry (ieee8021PbbVipEntry_t *poEntry);
ieee8021PbbVipEntry_t * ieee8021PbbVipTable_createExt (
uint32_t u32BridgeBasePortComponentId,
Expand Down Expand Up @@ -242,10 +251,12 @@ typedef struct ieee8021PbbPipEntry_t
size_t u16VipMap4_len; /* # of uint8_t elements */
uint8_t u8RowStatus;

xBTree_Node_t oComp_BTreeNode;
xBTree_Node_t oBTreeNode;
} ieee8021PbbPipEntry_t;

extern xBTree_t oIeee8021PbbPipTable_BTree;
extern xBTree_t oIeee8021PbbPipTable_Comp_BTree;

/* ieee8021PbbPipTable table mapper */
void ieee8021PbbPipTable_init (void);
Expand All @@ -255,6 +266,9 @@ ieee8021PbbPipEntry_t * ieee8021PbbPipTable_getByIndex (
uint32_t u32IfIndex);
ieee8021PbbPipEntry_t * ieee8021PbbPipTable_getNextIndex (
uint32_t u32IfIndex);
ieee8021PbbPipEntry_t * ieee8021PbbPipTable_Comp_getNextIndex (
uint32_t u32IComponentId,
uint32_t u32IfIndex);
void ieee8021PbbPipTable_removeEntry (ieee8021PbbPipEntry_t *poEntry);
ieee8021PbbPipEntry_t * ieee8021PbbPipTable_createExt (
uint32_t u32IfIndex);
Expand Down

0 comments on commit ac1ccc9

Please sign in to comment.