// find elements of "charlie" <-> "bravo" <-> "alpha" static void test_find_element() { char element_data1[] = "alpha"; char element_data2[] = "bravo"; char element_data3[] = "charlie"; char no_such_element[] = "NO SUCH ELEMENT"; dlist_element *new_element = create_dlist(); insert_after_dlist( new_element, element_data1 ); insert_after_dlist( new_element, element_data2 ); insert_after_dlist( new_element, element_data3 ); dlist_element *e = NULL; e = find_element( new_element, element_data3 ); assert_true( new_element->next == e ); e = find_element( new_element, element_data2 ); assert_true( new_element->next->next == e ); e = find_element( new_element, element_data1 ); assert_true( new_element->next->next->next == e ); e = find_element( new_element->next->next->next, element_data2 ); assert_true( new_element->next->next == e ); e = find_element( new_element, no_such_element ); assert_true( e == NULL ); delete_dlist( new_element ); }
static void test_create_dlist() { dlist_element *new_element = create_dlist(); assert_true( new_element != NULL ); assert_true( new_element->data == NULL ); assert_true( new_element->next == NULL ); assert_true( new_element->prev == NULL ); delete_dlist( new_element ); }
void init_probe_timer_table( void ) { probe_timer_table = create_dlist(); probe_timer_last = probe_timer_table; srandom( ( unsigned int ) time( NULL ) ); #if 1 set_interval_timer(); #endif }
bool _init_timer() { if ( timer_callbacks != NULL ) { error( "Called init_timer twice." ); return false; } timer_callbacks = create_dlist(); debug( "Initializing timer callbacks ( timer_callbacks = %p ).", timer_callbacks ); return true; }
static void setup_reverse_path( int status, const path *p, void *user_data ) { assert(user_data); packet_out_params *params = user_data; if ( status != SETUP_SUCCEEDED ) { error( "Failed to set up path ( status = %d ).", status ); output_packet( params->packet, params->out_datapath_id, params->out_port_no, params->out_vid ); free_buffer( params->packet ); xfree( params ); return; } struct ofp_match rmatch; set_ipv4_reverse_match( &rmatch, &(p->match) ); rmatch.dl_vlan = params->out_vid; openflow_actions *vlan_actions; vlan_actions = create_openflow_actions_to_update_vid( params->out_vid, params->in_vid ); path *rpath = create_path( rmatch, p->priority, p->idle_timeout, p->hard_timeout ); assert( rpath != NULL ); list_element *hops = p->hops; dlist_element *rhops = create_dlist(); while ( hops != NULL ) { hop *h = hops->data; assert( h != NULL ); hop *rh = create_hop( h->datapath_id, h->out_port, h->in_port, vlan_actions ); if ( vlan_actions ) { delete_actions( vlan_actions ); vlan_actions = NULL; } assert( rh != NULL ); rhops = insert_before_dlist( rhops, rh ); hops = hops->next; } while ( rhops != NULL && rhops->data != NULL ) { append_hop_to_path( rpath, ( hop * ) rhops->data ); rhops = rhops->next; } bool ret = setup_path( rpath, handle_setup, params, NULL, NULL ); if ( ret != true ) { error( "Failed to set up reverse path." ); output_packet( params->packet, params->out_datapath_id, params->out_port_no, params->out_vid ); free_buffer( params->packet ); xfree( params ); } delete_path( rpath ); delete_dlist( rhops ); }
// Remove "charlie" of "alpha" <-> "bravo" <-> "charlie" static void test_remove_last_element() { char element_data2[] = "bravo"; char element_data3[] = "charlie"; dlist_element *alpha = create_dlist(); dlist_element *bravo = insert_after_dlist( alpha, element_data2 ); dlist_element *charlie = insert_after_dlist( bravo, element_data3 ); assert_true( delete_dlist_element( charlie ) ); assert_true( bravo->next == NULL ); assert_true( bravo->prev == alpha ); delete_dlist( alpha ); }
// "alpha" <-> "bravo" <-> "charlie" static void test_get_last_element() { char element_data2[] = "bravo"; char element_data3[] = "charlie"; dlist_element *alpha = create_dlist(); dlist_element *bravo = insert_after_dlist( alpha, element_data2 ); dlist_element *charlie = insert_after_dlist( bravo, element_data3 ); assert_true( get_last_element( alpha ) == charlie ); assert_true( get_last_element( bravo ) == charlie ); assert_true( get_last_element( charlie ) == charlie ); delete_dlist( alpha ); }
dlist *create_dlist(unsigned int num_nodes) { if (0 == num_nodes) { return NULL; } else { dlist_node *p_node = (dlist_node *)ds_malloc(sizeof(dlist_node)); p_node->id = num_nodes; p_node->next = p_node->pre = NULL; return grow_dlist_from_head(create_dlist(num_nodes-1), p_node); } }
static bool _init_timer() { struct timer_info *timer = get_timer_info(); if ( timer != NULL ) { error( "init_timer has been called twice for thread id %ld", timer->thread_id ); return false; } timer = ( struct timer_info * ) xmalloc( sizeof( *timer ) ); timer->thread_id = current_thread(); timer->timer_callbacks = create_dlist(); timer_write_begin(); ALLOC_GROW( timer_list.timers, timer_list.timers_nr + 1, timer_list.timers_alloc ); timer_list.timers[ timer_list.timers_nr++ ] = timer; timer_write_end(); debug( "Initializing timer callbacks ( timer_callbacks = %p ).", timer->timer_callbacks ); return true; }
int main() { ITEMTYPE removed; Dlist *dl = create_dlist(); add_last_dlist(dl,10); add_last_dlist(dl,20); add_last_dlist(dl,30); add_last_dlist(dl,40); add_dlist(dl,70,1); add_dlist(dl,80,0); remove_dlist(dl,5,&removed); remove_dlist(dl,2,&removed); remove_dlist(dl,0,&removed); set_dlist(dl,0,35); remove_element_dlist(dl,20); remove_dlist(dl,0,&removed); print_dlist(dl); int n; get_dlist(dl,0,&n); printf("testando get_dlist(dl,0,&n) = %d\n",n); return 0; }
// NULL <- "alpha" <-> "bravo" <-> "charlie" <-> new_element static void test_insert_before_dlist() { char element_data1[] = "alpha"; char element_data2[] = "bravo"; char element_data3[] = "charlie"; dlist_element *new_element = create_dlist(); assert_true( insert_before_dlist( new_element, element_data1 ) ); assert_true( insert_before_dlist( new_element, element_data2 ) ); assert_true( insert_before_dlist( new_element, element_data3 ) ); assert_string_equal( new_element->prev->data, "charlie" ); assert_string_equal( new_element->prev->prev->data, "bravo" ); assert_string_equal( new_element->prev->prev->prev->data, "alpha" ); assert_true( new_element->prev->prev->prev->prev == NULL ); assert_true( new_element->prev->next == new_element ); assert_true( new_element->prev->prev->next->next == new_element ); assert_true( new_element->prev->prev->prev->next->next->next == new_element ); delete_dlist( new_element ); }
bucket_list * create_action_bucket_list() { return create_dlist(); }
action_list * create_action_list() { return create_dlist(); }
/** * Initializes event list which contains event callbacks. * @param None * @return bool True */ bool init_timer() { timer_callbacks = create_dlist(); return true; }