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 Mar 7, 2015
1 parent 45523fe commit 70f37a7
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 21 deletions.
46 changes: 29 additions & 17 deletions ethernet/ieee8021QBridgeMib.c
Original file line number Diff line number Diff line change
Expand Up @@ -1477,6 +1477,8 @@ ieee8021QBridgeFdbTable_createEntry (
return NULL;
}

poEntry->i32AgingTime = 300;

xBTree_nodeAdd (&poEntry->oBTreeNode, &oIeee8021QBridgeFdbTable_BTree);
return poEntry;
}
Expand Down Expand Up @@ -2353,11 +2355,12 @@ xBTree_t oIeee8021QBridgeForwardAllTable_BTree = xBTree_initInline (&ieee8021QBr
ieee8021QBridgeForwardAllEntry_t *
ieee8021QBridgeForwardAllTable_createEntry (
uint32_t u32VlanCurrentComponentId,
uint32_t u32VlanIndex)
uint32_t u32VlanIndex,
uint16_t u16Ports_len)
{
register ieee8021QBridgeForwardAllEntry_t *poEntry = NULL;

if ((poEntry = xBuffer_cAlloc (sizeof (*poEntry))) == NULL)
if (u16Ports_len == 0 || (poEntry = xBuffer_cAlloc (sizeof (*poEntry) + 3 * u16Ports_len)) == NULL)
{
return NULL;
}
Expand All @@ -2370,6 +2373,15 @@ ieee8021QBridgeForwardAllTable_createEntry (
return NULL;
}

poEntry->pu8Ports = (void *) (poEntry + 1);
poEntry->pu8StaticPorts = ((void *) (poEntry + 1)) + u16Ports_len;
poEntry->pu8ForbiddenPorts = ((void *) (poEntry + 1)) + 2 * u16Ports_len;
poEntry->u16Ports_len = u16Ports_len;
poEntry->u16StaticPorts_len = u16Ports_len;
poEntry->u16ForbiddenPorts_len = u16Ports_len;
xBitmap_setAll (poEntry->pu8Ports, xBitmap_bitLength (poEntry->u16Ports_len));
xBitmap_setAll (poEntry->pu8StaticPorts, xBitmap_bitLength (poEntry->u16StaticPorts_len));

xBTree_nodeAdd (&poEntry->oBTreeNode, &oIeee8021QBridgeForwardAllTable_BTree);
return poEntry;
}
Expand Down Expand Up @@ -2525,13 +2537,13 @@ ieee8021QBridgeForwardAllTable_mapper (
switch (table_info->colnum)
{
case IEEE8021QBRIDGEFORWARDALLPORTS:
snmp_set_var_typed_value (request->requestvb, ASN_OCTET_STR, (u_char*) table_entry->au8Ports, table_entry->u16Ports_len);
snmp_set_var_typed_value (request->requestvb, ASN_OCTET_STR, (u_char*) table_entry->pu8Ports, table_entry->u16Ports_len);
break;
case IEEE8021QBRIDGEFORWARDALLSTATICPORTS:
snmp_set_var_typed_value (request->requestvb, ASN_OCTET_STR, (u_char*) table_entry->au8StaticPorts, table_entry->u16StaticPorts_len);
snmp_set_var_typed_value (request->requestvb, ASN_OCTET_STR, (u_char*) table_entry->pu8StaticPorts, table_entry->u16StaticPorts_len);
break;
case IEEE8021QBRIDGEFORWARDALLFORBIDDENPORTS:
snmp_set_var_typed_value (request->requestvb, ASN_OCTET_STR, (u_char*) table_entry->au8ForbiddenPorts, table_entry->u16ForbiddenPorts_len);
snmp_set_var_typed_value (request->requestvb, ASN_OCTET_STR, (u_char*) table_entry->pu8ForbiddenPorts, table_entry->u16ForbiddenPorts_len);
break;

default:
Expand All @@ -2553,15 +2565,15 @@ ieee8021QBridgeForwardAllTable_mapper (
switch (table_info->colnum)
{
case IEEE8021QBRIDGEFORWARDALLSTATICPORTS:
ret = netsnmp_check_vb_type_and_max_size (request->requestvb, ASN_OCTET_STR, sizeof (table_entry->au8StaticPorts));
ret = netsnmp_check_vb_type_and_max_size (request->requestvb, ASN_OCTET_STR, table_entry->u16StaticPorts_len);
if (ret != SNMP_ERR_NOERROR)
{
netsnmp_set_request_error (reqinfo, request, ret);
return SNMP_ERR_NOERROR;
}
break;
case IEEE8021QBRIDGEFORWARDALLFORBIDDENPORTS:
ret = netsnmp_check_vb_type_and_max_size (request->requestvb, ASN_OCTET_STR, sizeof (table_entry->au8ForbiddenPorts));
ret = netsnmp_check_vb_type_and_max_size (request->requestvb, ASN_OCTET_STR, table_entry->u16ForbiddenPorts_len);
if (ret != SNMP_ERR_NOERROR)
{
netsnmp_set_request_error (reqinfo, request, ret);
Expand Down Expand Up @@ -2603,7 +2615,7 @@ ieee8021QBridgeForwardAllTable_mapper (
switch (table_info->colnum)
{
case IEEE8021QBRIDGEFORWARDALLSTATICPORTS:
if (pvOldDdata == NULL && (pvOldDdata = xBuffer_cAlloc (sizeof (xOctetString_t) + sizeof (table_entry->au8StaticPorts))) == NULL)
if (pvOldDdata == NULL && (pvOldDdata = xBuffer_cAlloc (sizeof (xOctetString_t) + table_entry->u16StaticPorts_len)) == NULL)
{
netsnmp_set_request_error (reqinfo, request, SNMP_ERR_RESOURCEUNAVAILABLE);
return SNMP_ERR_NOERROR;
Expand All @@ -2612,16 +2624,16 @@ ieee8021QBridgeForwardAllTable_mapper (
{
((xOctetString_t*) pvOldDdata)->pData = pvOldDdata + sizeof (xOctetString_t);
((xOctetString_t*) pvOldDdata)->u16Len = table_entry->u16StaticPorts_len;
memcpy (((xOctetString_t*) pvOldDdata)->pData, table_entry->au8StaticPorts, sizeof (table_entry->au8StaticPorts));
memcpy (((xOctetString_t*) pvOldDdata)->pData, table_entry->pu8StaticPorts, table_entry->u16StaticPorts_len);
netsnmp_request_add_list_data (request, netsnmp_create_data_list (ROLLBACK_BUFFER, pvOldDdata, &xBuffer_free));
}

memset (table_entry->au8StaticPorts, 0, sizeof (table_entry->au8StaticPorts));
memcpy (table_entry->au8StaticPorts, request->requestvb->val.string, request->requestvb->val_len);
memset (table_entry->pu8StaticPorts, 0, table_entry->u16StaticPorts_len);
memcpy (table_entry->pu8StaticPorts, request->requestvb->val.string, request->requestvb->val_len);
table_entry->u16StaticPorts_len = request->requestvb->val_len;
break;
case IEEE8021QBRIDGEFORWARDALLFORBIDDENPORTS:
if (pvOldDdata == NULL && (pvOldDdata = xBuffer_cAlloc (sizeof (xOctetString_t) + sizeof (table_entry->au8ForbiddenPorts))) == NULL)
if (pvOldDdata == NULL && (pvOldDdata = xBuffer_cAlloc (sizeof (xOctetString_t) + table_entry->u16ForbiddenPorts_len)) == NULL)
{
netsnmp_set_request_error (reqinfo, request, SNMP_ERR_RESOURCEUNAVAILABLE);
return SNMP_ERR_NOERROR;
Expand All @@ -2630,12 +2642,12 @@ ieee8021QBridgeForwardAllTable_mapper (
{
((xOctetString_t*) pvOldDdata)->pData = pvOldDdata + sizeof (xOctetString_t);
((xOctetString_t*) pvOldDdata)->u16Len = table_entry->u16ForbiddenPorts_len;
memcpy (((xOctetString_t*) pvOldDdata)->pData, table_entry->au8ForbiddenPorts, sizeof (table_entry->au8ForbiddenPorts));
memcpy (((xOctetString_t*) pvOldDdata)->pData, table_entry->pu8ForbiddenPorts, table_entry->u16ForbiddenPorts_len);
netsnmp_request_add_list_data (request, netsnmp_create_data_list (ROLLBACK_BUFFER, pvOldDdata, &xBuffer_free));
}

memset (table_entry->au8ForbiddenPorts, 0, sizeof (table_entry->au8ForbiddenPorts));
memcpy (table_entry->au8ForbiddenPorts, request->requestvb->val.string, request->requestvb->val_len);
memset (table_entry->pu8ForbiddenPorts, 0, table_entry->u16ForbiddenPorts_len);
memcpy (table_entry->pu8ForbiddenPorts, request->requestvb->val.string, request->requestvb->val_len);
table_entry->u16ForbiddenPorts_len = request->requestvb->val_len;
break;
}
Expand All @@ -2656,11 +2668,11 @@ ieee8021QBridgeForwardAllTable_mapper (
switch (table_info->colnum)
{
case IEEE8021QBRIDGEFORWARDALLSTATICPORTS:
memcpy (table_entry->au8StaticPorts, ((xOctetString_t*) pvOldDdata)->pData, ((xOctetString_t*) pvOldDdata)->u16Len);
memcpy (table_entry->pu8StaticPorts, ((xOctetString_t*) pvOldDdata)->pData, ((xOctetString_t*) pvOldDdata)->u16Len);
table_entry->u16StaticPorts_len = ((xOctetString_t*) pvOldDdata)->u16Len;
break;
case IEEE8021QBRIDGEFORWARDALLFORBIDDENPORTS:
memcpy (table_entry->au8ForbiddenPorts, ((xOctetString_t*) pvOldDdata)->pData, ((xOctetString_t*) pvOldDdata)->u16Len);
memcpy (table_entry->pu8ForbiddenPorts, ((xOctetString_t*) pvOldDdata)->pData, ((xOctetString_t*) pvOldDdata)->u16Len);
table_entry->u16ForbiddenPorts_len = ((xOctetString_t*) pvOldDdata)->u16Len;
break;
}
Expand Down
9 changes: 5 additions & 4 deletions ethernet/ieee8021QBridgeMib.h
Original file line number Diff line number Diff line change
Expand Up @@ -376,11 +376,11 @@ typedef struct ieee8021QBridgeForwardAllEntry_t
uint32_t u32VlanIndex;

/* Column values */
uint8_t au8Ports[ETHERNET_PORT_MAP_SIZE];
uint8_t *pu8Ports;
size_t u16Ports_len; /* # of uint8_t elements */
uint8_t au8StaticPorts[ETHERNET_PORT_MAP_SIZE];
uint8_t *pu8StaticPorts;
size_t u16StaticPorts_len; /* # of uint8_t elements */
uint8_t au8ForbiddenPorts[ETHERNET_PORT_MAP_SIZE];
uint8_t *pu8ForbiddenPorts;
size_t u16ForbiddenPorts_len; /* # of uint8_t elements */

xBTree_Node_t oBTreeNode;
Expand All @@ -392,7 +392,8 @@ extern xBTree_t oIeee8021QBridgeForwardAllTable_BTree;
void ieee8021QBridgeForwardAllTable_init (void);
ieee8021QBridgeForwardAllEntry_t * ieee8021QBridgeForwardAllTable_createEntry (
uint32_t u32VlanCurrentComponentId,
uint32_t u32VlanIndex);
uint32_t u32VlanIndex,
uint16_t u16Ports_len);
ieee8021QBridgeForwardAllEntry_t * ieee8021QBridgeForwardAllTable_getByIndex (
uint32_t u32VlanCurrentComponentId,
uint32_t u32VlanIndex);
Expand Down

0 comments on commit 70f37a7

Please sign in to comment.