/* * completely wipe out all entries in our data store */ void header_complex_free_all(struct header_complex_index *thestuff, HeaderComplexCleaner * cleaner) { struct header_complex_index *hciptr, *hciptrn; for (hciptr = thestuff; hciptr != NULL; hciptr = hciptrn) { hciptrn = hciptr->next; /* need to extract this before deleting it */ header_complex_free_entry(hciptr, cleaner); } }
static unsigned char *var_expValueTable(struct variable *vp, oid * name, size_t *length, int exact, size_t *var_len, WriteMethod ** write_method) { struct expValueTable_data *StorageTmp = NULL; DEBUGMSGTL(("expValueTable", "var_expValueTable: Entering... \n")); struct header_complex_index *hciptr, *hciptrn; for (hciptr = expValueTableStorage; hciptr; hciptr = hciptr->next) { StorageTmp = hciptr->data; StorageTmp->set = 0; } build_valuetable(); for (hciptr = expValueTableStorage; hciptr; hciptr = hciptrn) { hciptrn = hciptr->next; StorageTmp = hciptr->data; if (!StorageTmp->set) header_complex_free_entry(hciptr, expValueTable_clean); } /* * this assumes you have registered all your data properly */ if ((StorageTmp = header_complex(expValueTableStorage, vp, name, length, exact, var_len, write_method)) == NULL) { DEBUGMSGTL(("expValueTable", "%s: entry not found.\n", __func__)); return NULL; } DEBUGMSGTL(("expValueTable", "%s: vp->magic = %d.\n", __func__, vp->magic)); /* * this is where we do the value assignments for the mib results. */ switch (vp->magic) { /* * we only support counter32val */ case EXPVALUECOUNTER32VAL: StorageTmp->expValueCounter32Val = Evaluate_Expression(StorageTmp); *var_len = sizeof(StorageTmp->expValueCounter32Val); return (u_char *) & StorageTmp->expValueCounter32Val; case EXPVALUEUNSIGNED32VAL: /* var_len = sizeof(StorageTmp->expValueUnsigned32Val); */ /* return (u_char *) & StorageTmp->expValueUnsigned32Val; */ return NULL; case EXPVALUETIMETICKSVAL: /* var_len = sizeof(StorageTmp->expValueTimeTicksVal); */ /* return (u_char *) & StorageTmp->expValueTimeTicksVal; */ return NULL; case EXPVALUEINTEGER32VAL: /* var_len = sizeof(StorageTmp->expValueInteger32Val); */ /* return (u_char *) & StorageTmp->expValueInteger32Val; */ return NULL; case EXPVALUEIPADDRESSVAL: /* var_len = sizeof(StorageTmp->expValueIpAddressVal); */ /* return (u_char *) & StorageTmp->expValueIpAddressVal; */ return NULL; case EXPVALUEOCTETSTRINGVAL: /* var_len = sizeof(StorageTmp->expValueOctetStringVal); */ /* return (u_char *) & StorageTmp->expValueOctetStringVal; */ return NULL; case EXPVALUEOIDVAL: /* var_len = StorageTmp->expValueOidValLen; */ /* return (u_char *) & StorageTmp->expValueOidVal; */ return NULL; case EXPVALUECOUNTER64VAL: /* var_len = sizeof(StorageTmp->expValueCounter64Val); */ /* return (u_char *) & StorageTmp->expValueCounter64Val; */ return NULL; default: ERROR_MSG(""); return NULL; } }