Skip to content

Commit

Permalink
[nes]: ETHERNET changes ...
Browse files Browse the repository at this point in the history
  • Loading branch information
nes-repo committed Apr 15, 2015
1 parent 91a48c9 commit b60e801
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 93 deletions.
95 changes: 32 additions & 63 deletions ethernet/ieee8021BridgeMib.c
Original file line number Diff line number Diff line change
Expand Up @@ -3125,27 +3125,20 @@ ieee8021BridgePortPriorityTable_createEntry (
uint32_t u32BasePort)
{
register ieee8021BridgePortPriorityEntry_t *poEntry = NULL;
register ieee8021BridgeBasePortEntry_t *poPort = NULL;

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

poEntry->u32BasePortComponentId = u32BasePortComponentId;
poEntry->u32BasePort = u32BasePort;
if (xBTree_nodeFind (&poEntry->oBTreeNode, &oIeee8021BridgePortPriorityTable_BTree) != NULL)
if ((poPort = ieee8021BridgeBasePortTable_getByIndex (u32BasePortComponentId, u32BasePort)) == NULL)
{
xBuffer_free (poEntry);
return NULL;
}
poEntry = &poPort->oPriority;

poEntry->i32NumTrafficClasses = 8;
poEntry->i32CodePointSelection = ieee8021BridgePortPriorityCodePointSelection_codePoint8p0d_c;
poEntry->u8UseDEI = ieee8021BridgePortUseDEI_false_c;
poEntry->u8RequireDropEncoding = ieee8021BridgePortRequireDropEncoding_false_c;
poEntry->u8ServiceAccessPrioritySelection = ieee8021BridgePortServiceAccessPrioritySelection_false_c;

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

Expand All @@ -3154,63 +3147,35 @@ ieee8021BridgePortPriorityTable_getByIndex (
uint32_t u32BasePortComponentId,
uint32_t u32BasePort)
{
register ieee8021BridgePortPriorityEntry_t *poTmpEntry = NULL;
register xBTree_Node_t *poNode = NULL;
register ieee8021BridgeBasePortEntry_t *poPort = NULL;

if ((poTmpEntry = xBuffer_cAlloc (sizeof (*poTmpEntry))) == NULL)
if ((poPort = ieee8021BridgeBasePortTable_getByIndex (u32BasePortComponentId, u32BasePort)) == NULL)
{
return NULL;
}

poTmpEntry->u32BasePortComponentId = u32BasePortComponentId;
poTmpEntry->u32BasePort = u32BasePort;
if ((poNode = xBTree_nodeFind (&poTmpEntry->oBTreeNode, &oIeee8021BridgePortPriorityTable_BTree)) == NULL)
{
xBuffer_free (poTmpEntry);
return NULL;
}

xBuffer_free (poTmpEntry);
return xBTree_entry (poNode, ieee8021BridgePortPriorityEntry_t, oBTreeNode);
return &poPort->oPriority;
}

ieee8021BridgePortPriorityEntry_t *
ieee8021BridgePortPriorityTable_getNextIndex (
uint32_t u32BasePortComponentId,
uint32_t u32BasePort)
{
register ieee8021BridgePortPriorityEntry_t *poTmpEntry = NULL;
register xBTree_Node_t *poNode = NULL;
register ieee8021BridgeBasePortEntry_t *poPort = NULL;

if ((poTmpEntry = xBuffer_cAlloc (sizeof (*poTmpEntry))) == NULL)
if ((poPort = ieee8021BridgeBasePortTable_getNextIndex (u32BasePortComponentId, u32BasePort)) == NULL)
{
return NULL;
}

poTmpEntry->u32BasePortComponentId = u32BasePortComponentId;
poTmpEntry->u32BasePort = u32BasePort;
if ((poNode = xBTree_nodeFindNext (&poTmpEntry->oBTreeNode, &oIeee8021BridgePortPriorityTable_BTree)) == NULL)
{
xBuffer_free (poTmpEntry);
return NULL;
}

xBuffer_free (poTmpEntry);
return xBTree_entry (poNode, ieee8021BridgePortPriorityEntry_t, oBTreeNode);
return &poPort->oPriority;
}

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

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

Expand Down Expand Up @@ -3271,7 +3236,7 @@ ieee8021BridgePortPriorityTable_getFirst (
void **my_loop_context, void **my_data_context,
netsnmp_variable_list *put_index_data, netsnmp_iterator_info *mydata)
{
*my_loop_context = xBTree_nodeGetFirst (&oIeee8021BridgePortPriorityTable_BTree);
*my_loop_context = xBTree_nodeGetFirst (&oIeee8021BridgeBasePortTable_BTree);
return ieee8021BridgePortPriorityTable_getNext (my_loop_context, my_data_context, put_index_data, mydata);
}

Expand All @@ -3280,20 +3245,20 @@ ieee8021BridgePortPriorityTable_getNext (
void **my_loop_context, void **my_data_context,
netsnmp_variable_list *put_index_data, netsnmp_iterator_info *mydata)
{
ieee8021BridgePortPriorityEntry_t *poEntry = NULL;
ieee8021BridgeBasePortEntry_t *poEntry = NULL;
netsnmp_variable_list *idx = put_index_data;

if (*my_loop_context == NULL)
{
return NULL;
}
poEntry = xBTree_entry (*my_loop_context, ieee8021BridgePortPriorityEntry_t, oBTreeNode);
poEntry = xBTree_entry (*my_loop_context, ieee8021BridgeBasePortEntry_t, oBTreeNode);

snmp_set_var_typed_integer (idx, ASN_UNSIGNED, poEntry->u32BasePortComponentId);
snmp_set_var_typed_integer (idx, ASN_UNSIGNED, poEntry->u32ComponentId);
idx = idx->next_variable;
snmp_set_var_typed_integer (idx, ASN_UNSIGNED, poEntry->u32BasePort);
*my_data_context = (void*) poEntry;
*my_loop_context = (void*) xBTree_nodeGetNext (&poEntry->oBTreeNode, &oIeee8021BridgePortPriorityTable_BTree);
snmp_set_var_typed_integer (idx, ASN_UNSIGNED, poEntry->u32Port);
*my_data_context = (void*) &poEntry->oPriority;
*my_loop_context = (void*) xBTree_nodeGetNext (&poEntry->oBTreeNode, &oIeee8021BridgeBasePortTable_BTree);
return put_index_data;
}

Expand All @@ -3302,19 +3267,19 @@ ieee8021BridgePortPriorityTable_get (
void **my_data_context,
netsnmp_variable_list *put_index_data, netsnmp_iterator_info *mydata)
{
ieee8021BridgePortPriorityEntry_t *poEntry = NULL;
ieee8021BridgeBasePortEntry_t *poEntry = NULL;
register netsnmp_variable_list *idx1 = put_index_data;
register netsnmp_variable_list *idx2 = idx1->next_variable;

poEntry = ieee8021BridgePortPriorityTable_getByIndex (
poEntry = ieee8021BridgeBasePortTable_getByIndex (
*idx1->val.integer,
*idx2->val.integer);
if (poEntry == NULL)
{
return false;
}

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

Expand All @@ -3329,6 +3294,7 @@ ieee8021BridgePortPriorityTable_mapper (
netsnmp_request_info *request;
netsnmp_table_request_info *table_info;
ieee8021BridgePortPriorityEntry_t *table_entry;
register ieee8021BridgeBasePortEntry_t *poEntry = NULL;
void *pvOldDdata = NULL;
int ret;

Expand All @@ -3340,13 +3306,14 @@ ieee8021BridgePortPriorityTable_mapper (
case MODE_GET:
for (request = requests; request != NULL; request = request->next)
{
table_entry = (ieee8021BridgePortPriorityEntry_t*) netsnmp_extract_iterator_context (request);
poEntry = (ieee8021BridgeBasePortEntry_t*) netsnmp_extract_iterator_context (request);
table_info = netsnmp_extract_table_info (request);
if (table_entry == NULL)
if (poEntry == NULL)
{
netsnmp_set_request_error (reqinfo, request, SNMP_NOSUCHINSTANCE);
continue;
}
table_entry = &poEntry->oPriority;

switch (table_info->colnum)
{
Expand Down Expand Up @@ -3382,8 +3349,9 @@ ieee8021BridgePortPriorityTable_mapper (
case MODE_SET_RESERVE1:
for (request = requests; request != NULL; request = request->next)
{
table_entry = (ieee8021BridgePortPriorityEntry_t*) netsnmp_extract_iterator_context (request);
poEntry = (ieee8021BridgeBasePortEntry_t*) netsnmp_extract_iterator_context (request);
table_info = netsnmp_extract_table_info (request);
table_entry = &poEntry->oPriority;

switch (table_info->colnum)
{
Expand Down Expand Up @@ -3446,10 +3414,9 @@ ieee8021BridgePortPriorityTable_mapper (
case MODE_SET_RESERVE2:
for (request = requests; request != NULL; request = request->next)
{
table_entry = (ieee8021BridgePortPriorityEntry_t*) netsnmp_extract_iterator_context (request);
poEntry = (ieee8021BridgeBasePortEntry_t*) netsnmp_extract_iterator_context (request);
table_info = netsnmp_extract_table_info (request);

if (table_entry == NULL)
if (poEntry == NULL)
{
netsnmp_set_request_error (reqinfo, request, SNMP_NOSUCHINSTANCE);
continue;
Expand All @@ -3464,8 +3431,9 @@ ieee8021BridgePortPriorityTable_mapper (
for (request = requests; request != NULL; request = request->next)
{
pvOldDdata = netsnmp_request_get_list_data (request, ROLLBACK_BUFFER);
table_entry = (ieee8021BridgePortPriorityEntry_t*) netsnmp_extract_iterator_context (request);
poEntry = (ieee8021BridgeBasePortEntry_t*) netsnmp_extract_iterator_context (request);
table_info = netsnmp_extract_table_info (request);
table_entry = &poEntry->oPriority;

switch (table_info->colnum)
{
Expand Down Expand Up @@ -3561,12 +3529,13 @@ ieee8021BridgePortPriorityTable_mapper (
for (request = requests; request != NULL; request = request->next)
{
pvOldDdata = netsnmp_request_get_list_data (request, ROLLBACK_BUFFER);
table_entry = (ieee8021BridgePortPriorityEntry_t*) netsnmp_extract_iterator_context (request);
poEntry = (ieee8021BridgeBasePortEntry_t*) netsnmp_extract_iterator_context (request);
table_info = netsnmp_extract_table_info (request);
if (table_entry == NULL || pvOldDdata == NULL)
if (poEntry == NULL || pvOldDdata == NULL)
{
continue;
}
table_entry = &poEntry->oPriority;

switch (table_info->colnum)
{
Expand Down
66 changes: 36 additions & 30 deletions ethernet/ieee8021BridgeMib.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ extern "C" {
struct ieee8021BridgeBaseEntry_t;
typedef struct ieee8021BridgeBaseEntry_t ieee8021BridgeBaseEntry_t;

struct ieee8021BridgeBasePortEntry_t;
typedef struct ieee8021BridgeBasePortEntry_t ieee8021BridgeBasePortEntry_t;

#include "neIeee8021BridgeMIB.h"
#include "ieee8021QBridgeMib.h"
#include "ethernet_ext.h"
Expand Down Expand Up @@ -270,36 +273,6 @@ enum
ieee8021BridgeBasePortOperPointToPoint_false_c = 2,
};

/* table ieee8021BridgeBasePortTable row entry data structure */
typedef struct ieee8021BridgeBasePortEntry_t
{
/* Index values */
uint32_t u32ComponentId;
uint32_t u32Port;

/* Column values */
uint32_t u32IfIndex;
uint64_t u64DelayExceededDiscards;
uint64_t u64MtuExceededDiscards;
uint8_t au8Capabilities[1];
size_t u16Capabilities_len; /* # of uint8_t elements */
uint8_t au8TypeCapabilities[2];
size_t u16TypeCapabilities_len; /* # of uint8_t elements */
int32_t i32Type;
uint8_t u8External;
int32_t i32AdminPointToPoint;
uint8_t u8OperPointToPoint;
uint8_t au8Name[32];
size_t u16Name_len; /* # of uint8_t elements */

neIeee8021BridgeBasePortEntry_t oNe;

uint8_t u8RowStatus;
struct ieee8021BridgeBasePortEntry_t *pOldEntry;

xBTree_Node_t oBTreeNode;
} ieee8021BridgeBasePortEntry_t;

extern xBTree_t oIeee8021BridgeBasePortTable_BTree;

/* ieee8021BridgeBasePortTable table mapper */
Expand All @@ -314,6 +287,7 @@ ieee8021BridgeBasePortEntry_t * ieee8021BridgeBasePortTable_getNextIndex (
uint32_t u32ComponentId,
uint32_t u32Port);
#define ieee8021BridgeBasePortTable_getByNeEntry(poEntry) ((poEntry) == NULL ? NULL: xGetParentByMemberPtr ((poEntry), ieee8021BridgeBasePortEntry_t, oNe))
#define ieee8021BridgeBasePortTable_getByPriorityEntry(poEntry) ((poEntry) == NULL ? NULL: xGetParentByMemberPtr ((poEntry), ieee8021BridgeBasePortEntry_t, oPriority))
void ieee8021BridgeBasePortTable_removeEntry (ieee8021BridgeBasePortEntry_t *poEntry);
bool ieee8021BridgeBasePortTable_allocateIndex (
ieee8021BridgeBaseEntry_t *poComponent,
Expand Down Expand Up @@ -1212,6 +1186,38 @@ Netsnmp_Node_Handler ieee8021BridgeDot1dPortTable_mapper;
#endif /* SNMP_SRC */


/* table ieee8021BridgeBasePortTable row entry data structure */
/*typedef*/ struct ieee8021BridgeBasePortEntry_t
{
/* Index values */
uint32_t u32ComponentId;
uint32_t u32Port;

/* Column values */
uint32_t u32IfIndex;
uint64_t u64DelayExceededDiscards;
uint64_t u64MtuExceededDiscards;
uint8_t au8Capabilities[1];
size_t u16Capabilities_len; /* # of uint8_t elements */
uint8_t au8TypeCapabilities[2];
size_t u16TypeCapabilities_len; /* # of uint8_t elements */
int32_t i32Type;
uint8_t u8External;
int32_t i32AdminPointToPoint;
uint8_t u8OperPointToPoint;
uint8_t au8Name[32];
size_t u16Name_len; /* # of uint8_t elements */

neIeee8021BridgeBasePortEntry_t oNe;
ieee8021BridgePortPriorityEntry_t oPriority;

uint8_t u8RowStatus;
struct ieee8021BridgeBasePortEntry_t *pOldEntry;

xBTree_Node_t oBTreeNode;
} /*ieee8021BridgeBasePortEntry_t*/;



# ifdef __cplusplus
}
Expand Down

0 comments on commit b60e801

Please sign in to comment.