cl_vector_get_ptr( &p_adapter->ip_vector, idx );\r
p_net_addr_oid = (PNETWORK_ADDRESS)p_net_addrs->Address;\r
\r
- for( i = 0; i < p_net_addrs->AddressCount; ++i )\r
+ for( i = 0; i < p_net_addrs->AddressCount; ++i, p_net_addr_oid =\r
+ (PNETWORK_ADDRESS)((uint8_t *)p_net_addr_oid +\r
+ FIELD_OFFSET(NETWORK_ADDRESS, Address) +\r
+ p_net_addr_oid->AddressLength) )\r
{\r
\r
- // Here we check that the data stored at 'AddressLength' field is valid;\r
- // otherwise, it can lead to a memory violation (happened when AddressCount was > 1)\r
+ if( p_net_addr_oid->AddressType != NDIS_PROTOCOL_ID_TCP_IP )\r
+ {\r
+ IPOIB_PRINT( TRACE_LEVEL_WARNING, IPOIB_DBG_OID,\r
+ ("Port %d OID_GEN_NETWORK_LAYER_ADDRESSES - Address %d is wrong type of 0x%.4X, "\r
+ "should be 0x%.4X\n", port_num, i, p_net_addr_oid->AddressType,\r
+ NDIS_PROTOCOL_ID_TCP_IP));\r
+ continue;\r
+ }\r
+\r
if( p_net_addr_oid->AddressLength != NETWORK_ADDRESS_LENGTH_IP)\r
{\r
- IPOIB_PRINT(TRACE_LEVEL_ERROR, IPOIB_DBG_ERROR,\r
+ IPOIB_PRINT( TRACE_LEVEL_WARNING, IPOIB_DBG_OID,\r
("Port %d OID_GEN_NETWORK_LAYER_ADDRESSES - Address %d is wrong size of %d, "\r
"should be %d\n", port_num, i, p_net_addr_oid->AddressLength,\r
NETWORK_ADDRESS_LENGTH_IP));\r
- ASSERT ( p_net_addr_oid->AddressLength == NETWORK_ADDRESS_LENGTH_IPX );\r
- break;\r
+ continue;\r
}\r
-\r
- ASSERT( p_net_addr_oid->AddressType == NDIS_PROTOCOL_ID_TCP_IP );\r
- \r
- p_net_addr_oid = (PNETWORK_ADDRESS)((uint8_t *)p_net_addr_oid +\r
- FIELD_OFFSET(NETWORK_ADDRESS, Address) +\r
- p_net_addr_oid->AddressLength) ;\r
-\r
- \r
-\r
p_ip_addr = (PNETWORK_ADDRESS_IP)p_net_addr_oid->Address;\r
if( !cl_memcmp( &p_ip_addr->in_addr,\r
&p_addr_item->address.as_ulong, sizeof(ULONG) ) )\r
/* Now look for new addresses */\r
p_net_addr_oid = (NETWORK_ADDRESS *)p_net_addrs->Address;\r
idx = 0;\r
- \r
- for( i = 0; i < p_net_addrs->AddressCount; ++i )\r
+ for( i = 0; i < p_net_addrs->AddressCount; i++, p_net_addr_oid =\r
+ (PNETWORK_ADDRESS)((uint8_t *)p_net_addr_oid +\r
+ FIELD_OFFSET(NETWORK_ADDRESS, Address) + p_net_addr_oid->AddressLength) )\r
{\r
\r
- // Here we check that the data stored at 'AddressLength' field is valid;\r
- // otherwise, it can lead to a memory violation (happened when AddressCount was > 1)\r
+ if( p_net_addr_oid->AddressType != NDIS_PROTOCOL_ID_TCP_IP )\r
+ {\r
+ IPOIB_PRINT(TRACE_LEVEL_INFORMATION, IPOIB_DBG_OID,\r
+ ("Port %d OID_GEN_NETWORK_LAYER_ADDRESSES - Address %d is wrong type of 0x%.4X, "\r
+ "should be 0x%.4X\n", port_num, i, p_net_addr_oid->AddressType,\r
+ NDIS_PROTOCOL_ID_TCP_IP));\r
+ continue;\r
+ }\r
+\r
if( p_net_addr_oid->AddressLength != NETWORK_ADDRESS_LENGTH_IP)\r
{\r
- IPOIB_PRINT(TRACE_LEVEL_ERROR, IPOIB_DBG_ERROR,\r
+ IPOIB_PRINT(TRACE_LEVEL_INFORMATION, IPOIB_DBG_OID,\r
("Port %d OID_GEN_NETWORK_LAYER_ADDRESSES - Address %d is wrong size of %d, "\r
"should be %d\n", port_num, i, p_net_addr_oid->AddressLength,\r
NETWORK_ADDRESS_LENGTH_IP));\r
- ASSERT ( p_net_addr_oid->AddressLength == NETWORK_ADDRESS_LENGTH_IPX );\r
- break;\r
- \r
+ continue;\r
}\r
- \r
- ASSERT( p_net_addr_oid->AddressType == NDIS_PROTOCOL_ID_TCP_IP );\r
- \r
- p_net_addr_oid = (PNETWORK_ADDRESS)((uint8_t *)p_net_addr_oid +\r
- FIELD_OFFSET(NETWORK_ADDRESS, Address) +\r
- p_net_addr_oid->AddressLength) ;\r
- \r
- \r
+\r
p_ip_addr = (PNETWORK_ADDRESS_IP)p_net_addr_oid->Address;\r
\r
/* Size the vector as needed. */\r
if( cl_vector_get_size( &p_adapter->ip_vector ) <= idx )\r
cl_vector_set_size( &p_adapter->ip_vector, idx + 1 );\r
\r
- p_addr_item = (net_address_item_t *) cl_vector_get_ptr( &p_adapter->ip_vector, idx );\r
+ p_addr_item = cl_vector_get_ptr( &p_adapter->ip_vector, idx );\r
if( !cl_memcmp( &p_ip_addr->in_addr, &p_addr_item->address.as_ulong,\r
sizeof(ULONG) ) )\r
{\r