OLSR_LIST * search_proc_set(struct olsrv2 *olsr, union olsr_ip_addr orig_addr, olsr_u16_t seq_number, olsr_u8_t type) { OLSR_LIST *result = NULL; //WIN FIX: explicit typecast required char *search = (char *)olsr_malloc(sizeof(union olsr_ip_addr)+sizeof(olsr_u16_t)+sizeof(olsr_u8_t), __FUNCTION__); memcpy(search, &orig_addr, sizeof(union olsr_ip_addr)); search += sizeof(union olsr_ip_addr); memcpy(search, &seq_number, sizeof(olsr_u16_t)); search += sizeof(olsr_u16_t); memcpy(search, &type, sizeof(olsr_u8_t)); search -= sizeof(olsr_u16_t); search -= sizeof(union olsr_ip_addr); //struct olsrv2 result = OLSR_SearchList((void*)olsr,&olsr->proc_set[olsr_hashing(olsr,&orig_addr)].list, (void* )&search, &search_proc_set_handler); free(search); return result; }
void delete_relay_set_handler_for_ms_timeout(struct olsrv2 *olsr, OLSR_LIST* retList) { OLSR_LIST_ENTRY* ms_tmp = NULL; OLSR_MPR_SELECTOR_TUPLE* ms_data = NULL; OLSR_LIST *result = NULL; ms_tmp = retList->head; while(ms_tmp){ ms_data = (OLSR_MPR_SELECTOR_TUPLE* )ms_tmp->data; result = OLSR_SearchList((void*)olsr,&olsr->relay_set, (void* )&ms_data->MS_neighbor_if_addr, &search_relay_set_handler); if(result){ OLSR_DeleteList_Search(result); OLSR_DeleteListHandler((void*)olsr,&olsr->relay_set, (void* )&ms_data->MS_neighbor_if_addr, &delete_relay_set_handler); olsr->change_relay_set = OLSR_TRUE; } ms_tmp = ms_tmp->next; } }
OLSR_LIST *search_routing_set_for_dest(struct olsrv2 *olsr, union olsr_ip_addr *addr) { return OLSR_SearchList((void*)olsr,&olsr->routing_set[olsr_hashing(olsr,addr)].list, (void* )addr, &search_routing_set_for_dest_handler); }
OLSR_LIST *search_association_set_for_addr(struct olsrv2 *olsr, union olsr_ip_addr *addr){ OLSR_ASSOCIATION_TUPLE search; olsr_ip_copy(olsr, &search.NA_iface_addr, addr); return OLSR_SearchList((void*)olsr, &olsr->associ_set[olsr_hashing(olsr,addr)].list, (void* )&search, &search_association_set_for_addr_handler); }
OLSR_LIST *search_mpr_set(struct olsrv2 *olsr, union olsr_ip_addr *local_iface_addr, union olsr_ip_addr *MPR_if_addr) { OLSR_MPR_TUPLE search; olsr_ip_copy(olsr, &search.local_iface_addr, local_iface_addr); olsr_ip_copy(olsr, &search.MPR_if_addr, MPR_if_addr); return OLSR_SearchList((void*)olsr,&olsr->mpr_set, (void* )&search, &search_mpr_set_handler); }
OLSR_LIST * search_relay_set(struct olsrv2 *olsr, union olsr_ip_addr *neighbor_iface_addr) { OLSR_LIST *result = NULL; result = OLSR_SearchList((void*)olsr,&olsr->relay_set, (void* )neighbor_iface_addr, &search_relay_set_handler); return result; }
OLSR_LIST *lookup_topology_set(struct olsrv2 *olsr, union olsr_ip_addr *T_last_addr ) { OLSR_LIST *result = NULL; result = OLSR_SearchList((void*)olsr,&olsr->topology_set[olsr_hashing(olsr,T_last_addr)].list, &T_last_addr, &lookup_topology_set_handler); return result; }
OLSR_LIST * search_topology_set_for_last(struct olsrv2 *olsr, union olsr_ip_addr *last_addr) { OLSR_LIST *result = NULL; result = OLSR_SearchList((void*)olsr,&olsr->topology_set[olsr_hashing(olsr,last_addr)].list, (void* )last_addr, &search_topology_set_handler_for_last); return result; }
OLSR_LIST * search_topology_set(struct olsrv2 *olsr, const union olsr_ip_addr *adv_neighbor_addr, union olsr_ip_addr *orig_addr) { OLSR_LIST *result = NULL; OLSR_TOPOLOGY_TUPLE search; olsr_ip_copy(olsr, &search.T_dest_iface_addr, adv_neighbor_addr); olsr_ip_copy(olsr, &search.T_last_iface_addr, orig_addr); result = OLSR_SearchList((void*)olsr,&olsr->topology_set[olsr_hashing(olsr,orig_addr)].list, (void* )&search, &search_topology_set_handler); return result; }
OLSR_LIST *search_routing_set_old_for_next_and_dest( struct olsrv2* olsr, union olsr_ip_addr *dest_iface_addr, const union olsr_ip_addr *next_iface_addr) { OLSR_LIST *result = NULL; OLSR_ROUTING_TUPLE search; olsr_ip_copy(olsr, &search.R_dest_iface_addr, dest_iface_addr); olsr_ip_copy(olsr, &search.R_next_iface_addr, next_iface_addr); result = OLSR_SearchList((void*)olsr,&olsr->routing_set_old[olsr_hashing(olsr,dest_iface_addr)].list, (void* )&search, &search_routing_set_for_next_and_dest_handler); return result; }