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 Jul 20, 2015
1 parent 3163bae commit 6d33e17
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 63 deletions.
80 changes: 17 additions & 63 deletions mpls/mplsLsrStdMIB.c
Original file line number Diff line number Diff line change
Expand Up @@ -595,101 +595,55 @@ mplsInterfacePerfTable_init (void)
/* Initialise the contents of the table here */
}

static int8_t
mplsInterfacePerfTable_BTreeNodeCmp (
xBTree_Node_t *pNode1, xBTree_Node_t *pNode2, xBTree_t *pBTree)
{
register mplsInterfacePerfEntry_t *pEntry1 = xBTree_entry (pNode1, mplsInterfacePerfEntry_t, oBTreeNode);
register mplsInterfacePerfEntry_t *pEntry2 = xBTree_entry (pNode2, mplsInterfacePerfEntry_t, oBTreeNode);

return
(pEntry1->u32Index < pEntry2->u32Index) ? -1:
(pEntry1->u32Index == pEntry2->u32Index) ? 0: 1;
}

xBTree_t oMplsInterfacePerfTable_BTree = xBTree_initInline (&mplsInterfacePerfTable_BTreeNodeCmp);

/* create a new row in the table */
mplsInterfacePerfEntry_t *
mplsInterfacePerfTable_createEntry (
uint32_t u32Index)
{
register mplsInterfacePerfEntry_t *poEntry = NULL;
register mplsInterfaceEntry_t *poInterface = NULL;

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

poEntry->u32Index = u32Index;
if (xBTree_nodeFind (&poEntry->oBTreeNode, &oMplsInterfacePerfTable_BTree) != NULL)
if ((poInterface = mplsInterfaceTable_getByIndex (u32Index)) == NULL)
{
xBuffer_free (poEntry);
return NULL;
}
poEntry = &poInterface->oPerf;

xBTree_nodeAdd (&poEntry->oBTreeNode, &oMplsInterfacePerfTable_BTree);
return poEntry;
}

mplsInterfacePerfEntry_t *
mplsInterfacePerfTable_getByIndex (
uint32_t u32Index)
{
register mplsInterfacePerfEntry_t *poTmpEntry = NULL;
register xBTree_Node_t *poNode = NULL;
register mplsInterfaceEntry_t *poInterface = NULL;

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

poTmpEntry->u32Index = u32Index;
if ((poNode = xBTree_nodeFind (&poTmpEntry->oBTreeNode, &oMplsInterfacePerfTable_BTree)) == NULL)
{
xBuffer_free (poTmpEntry);
return NULL;
}

xBuffer_free (poTmpEntry);
return xBTree_entry (poNode, mplsInterfacePerfEntry_t, oBTreeNode);
return &poInterface->oPerf;
}

mplsInterfacePerfEntry_t *
mplsInterfacePerfTable_getNextIndex (
uint32_t u32Index)
{
register mplsInterfacePerfEntry_t *poTmpEntry = NULL;
register xBTree_Node_t *poNode = NULL;

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

poTmpEntry->u32Index = u32Index;
if ((poNode = xBTree_nodeFindNext (&poTmpEntry->oBTreeNode, &oMplsInterfacePerfTable_BTree)) == NULL)
if ((poInterface = mplsInterfaceTable_getNextIndex (u32Index)) == NULL)
{
xBuffer_free (poTmpEntry);
return NULL;
}

xBuffer_free (poTmpEntry);
return xBTree_entry (poNode, mplsInterfacePerfEntry_t, oBTreeNode);
return &poInterface->oPerf;
}

/* remove a row from the table */
void
mplsInterfacePerfTable_removeEntry (mplsInterfacePerfEntry_t *poEntry)
{
if (poEntry == NULL ||
xBTree_nodeFind (&poEntry->oBTreeNode, &oMplsInterfacePerfTable_BTree) == NULL)
{
return; /* Nothing to remove */
}

xBTree_nodeRemove (&poEntry->oBTreeNode, &oMplsInterfacePerfTable_BTree);
xBuffer_free (poEntry); /* XXX - release any other internal resources */
return;
}

Expand All @@ -699,7 +653,7 @@ mplsInterfacePerfTable_getFirst (
void **my_loop_context, void **my_data_context,
netsnmp_variable_list *put_index_data, netsnmp_iterator_info *mydata)
{
*my_loop_context = xBTree_nodeGetFirst (&oMplsInterfacePerfTable_BTree);
*my_loop_context = xBTree_nodeGetFirst (&oMplsInterfaceTable_BTree);
return mplsInterfacePerfTable_getNext (my_loop_context, my_data_context, put_index_data, mydata);
}

Expand All @@ -708,18 +662,18 @@ mplsInterfacePerfTable_getNext (
void **my_loop_context, void **my_data_context,
netsnmp_variable_list *put_index_data, netsnmp_iterator_info *mydata)
{
mplsInterfacePerfEntry_t *poEntry = NULL;
mplsInterfaceEntry_t *poEntry = NULL;
netsnmp_variable_list *idx = put_index_data;

if (*my_loop_context == NULL)
{
return NULL;
}
poEntry = xBTree_entry (*my_loop_context, mplsInterfacePerfEntry_t, oBTreeNode);
poEntry = xBTree_entry (*my_loop_context, mplsInterfaceEntry_t, oBTreeNode);

snmp_set_var_typed_integer (idx, ASN_INTEGER, poEntry->u32Index);
*my_data_context = (void*) poEntry;
*my_loop_context = (void*) xBTree_nodeGetNext (&poEntry->oBTreeNode, &oMplsInterfacePerfTable_BTree);
*my_data_context = (void*) &poEntry->oPerf;
*my_loop_context = (void*) xBTree_nodeGetNext (&poEntry->oBTreeNode, &oMplsInterfaceTable_BTree);
return put_index_data;
}

Expand All @@ -728,17 +682,17 @@ mplsInterfacePerfTable_get (
void **my_data_context,
netsnmp_variable_list *put_index_data, netsnmp_iterator_info *mydata)
{
mplsInterfacePerfEntry_t *poEntry = NULL;
mplsInterfaceEntry_t *poEntry = NULL;
register netsnmp_variable_list *idx1 = put_index_data;

poEntry = mplsInterfacePerfTable_getByIndex (
poEntry = mplsInterfaceTable_getByIndex (
*idx1->val.integer);
if (poEntry == NULL)
{
return false;
}

*my_data_context = (void*) poEntry;
*my_data_context = (void*) &poEntry->oPerf;
return true;
}

Expand Down
1 change: 1 addition & 0 deletions mpls/mplsLsrStdMIB.h
Original file line number Diff line number Diff line change
Expand Up @@ -853,6 +853,7 @@ typedef struct mplsInterfaceEntry_t
uint8_t au8LabelParticipationType[1];
size_t u16LabelParticipationType_len; /* # of uint8_t elements */

mplsInterfacePerfEntry_t oPerf;
gmplsInterfaceEntry_t oG;

int32_t i32Mtu;
Expand Down

0 comments on commit 6d33e17

Please sign in to comment.