- ret = c_avl_get(td->index_instance, &index, (void **)&instance);
- if (ret != 0) {
- DEBUG(PLUGIN_NAME ": Nonexisting index '%d' requested", index);
- pthread_mutex_unlock(&g_agent->lock);
- return SNMP_NOSUCHINSTANCE;
+ if (!td->index_oid.oid_len) {
+ char key[MAX_OID_LEN];
+
+ memset(key, 0, sizeof(key));
+ snmp_agent_generate_oid2string(
+ &oid, MIN(oid.oid_len, dd->oids[i].oid_len), key);
+
+ ret = c_avl_get(td->instance_index, key, (void **)&instance);
+ if (ret != 0) {
+ DEBUG(PLUGIN_NAME ": Nonexisting index string '%s' requested", key);
+ pthread_mutex_unlock(&g_agent->lock);
+ return SNMP_NOSUCHINSTANCE;
+ }
+ } else {
+ int index = oid.oid[oid.oid_len - 1];
+
+ ret = c_avl_get(td->index_instance, &index, (void **)&instance);
+ if (ret != 0) {
+ DEBUG(PLUGIN_NAME ": Nonexisting index '%d' requested", index);
+ pthread_mutex_unlock(&g_agent->lock);
+ return SNMP_NOSUCHINSTANCE;
+ }