Esempio n. 1
0
// 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 );
}
Esempio n. 2
0
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 );
}
Esempio n. 3
0
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
}
Esempio n. 4
0
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 );
}
Esempio n. 6
0
// 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 );
}
Esempio n. 7
0
// "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 );
}
Esempio n. 8
0
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);
   }
}
Esempio n. 9
0
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;
} 
Esempio n. 11
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 );
}
Esempio n. 12
0
bucket_list *
create_action_bucket_list() {
  return create_dlist();
}
Esempio n. 13
0
action_list *
create_action_list() {
  return create_dlist();
}
Esempio n. 14
0
File: timer.c Progetto: nhst/trema
/**
 * Initializes event list which contains event callbacks.
 * @param None
 * @return bool True
 */
bool
init_timer() {
  timer_callbacks = create_dlist();
  return true;
}