Example #1
0
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;
  }
}
Example #3
0
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);
}
Example #5
0
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;
}
Example #10
0
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;

}