Skip to content

Commit

Permalink
[nes]: GMPLS changes ...
Browse files Browse the repository at this point in the history
  • Loading branch information
nes-repo committed Aug 25, 2015
1 parent afd902f commit 32ce164
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
40 changes: 40 additions & 0 deletions mpls/mplsLsrStdMIB.c
Original file line number Diff line number Diff line change
Expand Up @@ -805,7 +805,21 @@ mplsInSegmentTable_BTreeNodeCmp (
(xBinCmp (pEntry1->au8Index, pEntry2->au8Index, pEntry1->u16Index_len, pEntry2->u16Index_len) == 0) ? 0: 1;
}

static int8_t
mplsInSegmentTable_If_BTreeNodeCmp (
xBTree_Node_t *pNode1, xBTree_Node_t *pNode2, xBTree_t *pBTree)
{
register mplsInSegmentEntry_t *pEntry1 = xBTree_entry (pNode1, mplsInSegmentEntry_t, oIf_BTreeNode);
register mplsInSegmentEntry_t *pEntry2 = xBTree_entry (pNode2, mplsInSegmentEntry_t, oIf_BTreeNode);

return
(pEntry1->oK.u32Interface < pEntry2->oK.u32Interface) ||
(pEntry1->oK.u32Interface == pEntry2->oK.u32Interface && xBinCmp (pEntry1->au8Index, pEntry2->au8Index, pEntry1->u16Index_len, pEntry2->u16Index_len) == -1) ? -1:
(pEntry1->oK.u32Interface == pEntry2->oK.u32Interface && xBinCmp (pEntry1->au8Index, pEntry2->au8Index, pEntry1->u16Index_len, pEntry2->u16Index_len) == 0) ? 0: 1;
}

xBTree_t oMplsInSegmentTable_BTree = xBTree_initInline (&mplsInSegmentTable_BTreeNodeCmp);
xBTree_t oMplsInSegmentTable_If_BTree = xBTree_initInline (&mplsInSegmentTable_If_BTreeNodeCmp);

/* create a new row in the table */
mplsInSegmentEntry_t *
Expand Down Expand Up @@ -886,6 +900,32 @@ mplsInSegmentTable_getNextIndex (
return xBTree_entry (poNode, mplsInSegmentEntry_t, oBTreeNode);
}

mplsInSegmentEntry_t *
mplsInSegmentTable_If_getNextIndex (
uint32_t u32Interface,
uint8_t *pau8Index, size_t u16Index_len)
{
register mplsInSegmentEntry_t *poTmpEntry = NULL;
register xBTree_Node_t *poNode = NULL;

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

poTmpEntry->oK.u32Interface = u32Interface;
memcpy (poTmpEntry->au8Index, pau8Index, u16Index_len);
poTmpEntry->u16Index_len = u16Index_len;
if ((poNode = xBTree_nodeFindNext (&poTmpEntry->oIf_BTreeNode, &oMplsInSegmentTable_If_BTree)) == NULL)
{
xBuffer_free (poTmpEntry);
return NULL;
}

xBuffer_free (poTmpEntry);
return xBTree_entry (poNode, mplsInSegmentEntry_t, oIf_BTreeNode);
}

/* remove a row from the table */
void
mplsInSegmentTable_removeEntry (mplsInSegmentEntry_t *poEntry)
Expand Down
9 changes: 9 additions & 0 deletions mpls/mplsLsrStdMIB.h
Original file line number Diff line number Diff line change
Expand Up @@ -604,6 +604,10 @@ typedef struct mplsInSegmentEntry_t
uint8_t au8Index[24];
size_t u16Index_len; /* # of uint8_t elements */

struct {
uint32_t u32Interface;
} oK;

/* Column values */
uint32_t u32Interface;
uint32_t u32Label;
Expand All @@ -624,9 +628,11 @@ typedef struct mplsInSegmentEntry_t
neMplsInSegmentEntry_t oNe;

xBTree_Node_t oBTreeNode;
xBTree_Node_t oIf_BTreeNode;
} mplsInSegmentEntry_t;

extern xBTree_t oMplsInSegmentTable_BTree;
extern xBTree_t oMplsInSegmentTable_If_BTree;

/* mplsInSegmentTable table mapper */
void mplsInSegmentTable_init (void);
Expand All @@ -636,6 +642,9 @@ mplsInSegmentEntry_t * mplsInSegmentTable_getByIndex (
uint8_t *pau8Index, size_t u16Index_len);
mplsInSegmentEntry_t * mplsInSegmentTable_getNextIndex (
uint8_t *pau8Index, size_t u16Index_len);
mplsInSegmentEntry_t * mplsInSegmentTable_If_getNextIndex (
uint32_t u32Interface,
uint8_t *pau8Index, size_t u16Index_len);
void mplsInSegmentTable_removeEntry (mplsInSegmentEntry_t *poEntry);
mplsInSegmentEntry_t * mplsInSegmentTable_createExt (
uint8_t *pau8Index, size_t u16Index_len);
Expand Down

0 comments on commit 32ce164

Please sign in to comment.