olsr_bool delete_proc_set_for_timeout_handler(void* olsr, void *arg_a, void *arg_b) { OLSR_PROC_TUPLE *data = NULL; olsr_time_t *todelete = NULL; data = (OLSR_PROC_TUPLE *)arg_a; todelete = (olsr_time_t *)arg_b; return (olsr_bool) (olsr_cmp_time(data->P_time, *todelete) < 0); }
olsr_bool delete_topology_set_for_timeout_handler(void* olsr, void *arg_a, void *arg_b) { OLSR_TOPOLOGY_TUPLE *data = NULL; olsr_time_t *todelete = NULL; data = (OLSR_TOPOLOGY_TUPLE *)arg_a; todelete = (olsr_time_t *)arg_b; return (olsr_bool)(olsr_cmp_time(data->T_time, *todelete) < 0); }
void delete_association_set_for_timeout(struct olsrv2 *olsr){ OLSR_LIST_ENTRY *entry = NULL, *list_entry = NULL, *del = NULL; OLSR_ASSOCIATION_TUPLE *data = NULL, *list_data = NULL; int hash_index, i; olsr_time_t time; //return; // olsr_cnf->debug_level = 9; //print_association_set(olsr); //olsr_cnf->debug_level = 0; get_current_time(olsr, &time); for(hash_index = 0; hash_index < HASHSIZE; hash_index++) { entry = olsr->associ_set[hash_index].list.head; while(entry) { data = (OLSR_ASSOCIATION_TUPLE *)entry->data; del = entry; entry = entry->next; if(olsr_cmp_time(data->NA_time, time) < 0) { for(i = 0; i < data->num_NAlist; i++) { list_entry = data->NA_list[i]; list_data = (OLSR_ASSOCIATION_TUPLE *)list_entry->data; if(list_entry == entry) { entry = entry->next; } free(list_data->NA_list); OLSR_DeleteListEntry(&olsr->associ_set[olsr_hashing(olsr, &list_data->NA_iface_addr)].list, list_entry); } free(data->NA_list); OLSR_DeleteListEntry(&olsr->associ_set[olsr_hashing(olsr, &data->NA_iface_addr)].list, del); olsr->change_associ_set = OLSR_TRUE; } } } }