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 2, 2015
1 parent 9bea6e0 commit 317011b
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 67 deletions.
84 changes: 17 additions & 67 deletions mpls/mplsLsrStdMIB.c
Original file line number Diff line number Diff line change
Expand Up @@ -4039,107 +4039,57 @@ gmplsInSegmentTable_init (void)
/* Initialise the contents of the table here */
}

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

return
(xBinCmp (pEntry1->au8Index, pEntry2->au8Index, pEntry1->u16Index_len, pEntry2->u16Index_len) == -1) ? -1:
(xBinCmp (pEntry1->au8Index, pEntry2->au8Index, pEntry1->u16Index_len, pEntry2->u16Index_len) == 0) ? 0: 1;
}

xBTree_t oGmplsInSegmentTable_BTree = xBTree_initInline (&gmplsInSegmentTable_BTreeNodeCmp);

/* create a new row in the table */
gmplsInSegmentEntry_t *
gmplsInSegmentTable_createEntry (
uint8_t *pau8Index, size_t u16Index_len)
{
register gmplsInSegmentEntry_t *poEntry = NULL;
register mplsInSegmentEntry_t *poInSegment = NULL;

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

memcpy (poEntry->au8Index, pau8Index, u16Index_len);
poEntry->u16Index_len = u16Index_len;
if (xBTree_nodeFind (&poEntry->oBTreeNode, &oGmplsInSegmentTable_BTree) != NULL)
if ((poInSegment = mplsInSegmentTable_getByIndex (pau8Index, u16Index_len)) == NULL)
{
xBuffer_free (poEntry);
return NULL;
}
poEntry = &poInSegment->oG;

poEntry->i32Direction = gmplsInSegmentDirection_forward_c;
/*poEntry->aoExtraParamsPtr = zeroDotZero*/;

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

gmplsInSegmentEntry_t *
gmplsInSegmentTable_getByIndex (
uint8_t *pau8Index, size_t u16Index_len)
{
register gmplsInSegmentEntry_t *poTmpEntry = NULL;
register xBTree_Node_t *poNode = NULL;

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

memcpy (poTmpEntry->au8Index, pau8Index, u16Index_len);
poTmpEntry->u16Index_len = u16Index_len;
if ((poNode = xBTree_nodeFind (&poTmpEntry->oBTreeNode, &oGmplsInSegmentTable_BTree)) == NULL)
if ((poInSegment = mplsInSegmentTable_getByIndex (pau8Index, u16Index_len)) == NULL)
{
xBuffer_free (poTmpEntry);
return NULL;
}

xBuffer_free (poTmpEntry);
return xBTree_entry (poNode, gmplsInSegmentEntry_t, oBTreeNode);
return &poInSegment->oG;
}

gmplsInSegmentEntry_t *
gmplsInSegmentTable_getNextIndex (
uint8_t *pau8Index, size_t u16Index_len)
{
register gmplsInSegmentEntry_t *poTmpEntry = NULL;
register xBTree_Node_t *poNode = NULL;

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

memcpy (poTmpEntry->au8Index, pau8Index, u16Index_len);
poTmpEntry->u16Index_len = u16Index_len;
if ((poNode = xBTree_nodeFindNext (&poTmpEntry->oBTreeNode, &oGmplsInSegmentTable_BTree)) == NULL)
if ((poInSegment = mplsInSegmentTable_getNextIndex (pau8Index, u16Index_len)) == NULL)
{
xBuffer_free (poTmpEntry);
return NULL;
}

xBuffer_free (poTmpEntry);
return xBTree_entry (poNode, gmplsInSegmentEntry_t, oBTreeNode);
return &poInSegment->oG;
}

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

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

Expand All @@ -4149,7 +4099,7 @@ gmplsInSegmentTable_getFirst (
void **my_loop_context, void **my_data_context,
netsnmp_variable_list *put_index_data, netsnmp_iterator_info *mydata)
{
*my_loop_context = xBTree_nodeGetFirst (&oGmplsInSegmentTable_BTree);
*my_loop_context = xBTree_nodeGetFirst (&oMplsInSegmentTable_BTree);
return gmplsInSegmentTable_getNext (my_loop_context, my_data_context, put_index_data, mydata);
}

Expand All @@ -4158,18 +4108,18 @@ gmplsInSegmentTable_getNext (
void **my_loop_context, void **my_data_context,
netsnmp_variable_list *put_index_data, netsnmp_iterator_info *mydata)
{
gmplsInSegmentEntry_t *poEntry = NULL;
mplsInSegmentEntry_t *poEntry = NULL;
netsnmp_variable_list *idx = put_index_data;

if (*my_loop_context == NULL)
{
return NULL;
}
poEntry = xBTree_entry (*my_loop_context, gmplsInSegmentEntry_t, oBTreeNode);
poEntry = xBTree_entry (*my_loop_context, mplsInSegmentEntry_t, oBTreeNode);

snmp_set_var_value (idx, poEntry->au8Index, poEntry->u16Index_len);
*my_data_context = (void*) poEntry;
*my_loop_context = (void*) xBTree_nodeGetNext (&poEntry->oBTreeNode, &oGmplsInSegmentTable_BTree);
*my_data_context = (void*) &poEntry->oG;
*my_loop_context = (void*) xBTree_nodeGetNext (&poEntry->oBTreeNode, &oMplsInSegmentTable_BTree);
return put_index_data;
}

Expand All @@ -4178,17 +4128,17 @@ gmplsInSegmentTable_get (
void **my_data_context,
netsnmp_variable_list *put_index_data, netsnmp_iterator_info *mydata)
{
gmplsInSegmentEntry_t *poEntry = NULL;
mplsInSegmentEntry_t *poEntry = NULL;
register netsnmp_variable_list *idx1 = put_index_data;

poEntry = gmplsInSegmentTable_getByIndex (
poEntry = mplsInSegmentTable_getByIndex (
(void*) idx1->val.string, idx1->val_len);
if (poEntry == NULL)
{
return false;
}

*my_data_context = (void*) poEntry;
*my_data_context = (void*) &poEntry->oG;
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 @@ -619,6 +619,7 @@ typedef struct mplsInSegmentEntry_t
uint8_t u8StorageType;

mplsInSegmentPerfEntry_t oPerf;
gmplsInSegmentEntry_t oG;

xBTree_Node_t oBTreeNode;
} mplsInSegmentEntry_t;
Expand Down

0 comments on commit 317011b

Please sign in to comment.