static void finalize_exact_match_table( hash_table *exact_table ) { assert( exact_table != NULL ); foreach_hash( exact_table, free_exact_match_entry, NULL ); delete_hash( exact_table ); }
static void age_host_db( void *user_data ) { UNUSED( user_data ); debug( "Host DB: start aging." ); foreach_hash( host_db, age_host_db_entry, NULL ); }
static void update_all_entries( void *datapath_id, void *sw, void *user_data ) { UNUSED( datapath_id ); UNUSED( user_data ); hash_table *forwarding_db = ( ( known_switch * ) sw )->forwarding_db; foreach_hash( forwarding_db, age_forwarding_db, forwarding_db ); }
void finalize_dpid_table( void ) { assert( dpid_table != NULL ); foreach_hash( dpid_table, free_dpid_table_walker, NULL ); delete_hash( dpid_table ); dpid_table = NULL; }
static void map_exact_match_table( hash_table *exact_table, struct ofp_match *match, void function( struct ofp_match, uint16_t, void *, void * ), void *user_data ) { assert( exact_table != NULL ); assert( function != NULL ); match_walker walker; walker.match = match; walker.function = function; walker.user_data = user_data; foreach_hash( exact_table, exact_match_table_walker, &walker ); }
static void xfree_all_sw_tx( all_sw_tx *tx ) { struct event_forward_operation_to_all_request_param *param = tx->request_param; xfree_event_forward_operation_to_all_request_param( param ); tx->request_param = NULL; foreach_hash( tx->waiting_dpid, xfree_dpid, NULL ); delete_hash( tx->waiting_dpid ); tx->waiting_dpid = NULL; xfree( tx ); }
static void test_foreach() { table = create_hash( compare_string, hash_string ); insert_hash_entry( table, alpha, alpha ); insert_hash_entry( table, bravo, bravo ); insert_hash_entry( table, charlie, charlie ); delete_hash_entry( table, bravo ); delete_hash_entry( table, charlie ); foreach_hash( table, append_back_foreach, NULL ); assert_string_equal( abc[ 0 ], "alpha" ); assert_true( abc[ 1 ] == NULL ); assert_true( abc[ 2 ] == NULL ); delete_hash( table ); }
void finalize_match_table( void ) { list_element *list; pthread_mutex_lock( match_table_head.mutex ); foreach_hash( match_table_head.exact_table, free_match_table_walker, NULL ); delete_hash( match_table_head.exact_table ); match_table_head.exact_table = NULL; for ( list = match_table_head.wildcard_table; list != NULL; list = list->next ) { free_match_entry( list->data ); } delete_list( match_table_head.wildcard_table ); match_table_head.wildcard_table = NULL; pthread_mutex_unlock( match_table_head.mutex ); pthread_mutex_destroy( match_table_head.mutex ); xfree( match_table_head.mutex ); match_table_head.mutex = NULL; }
static void refresh( known_switch *sw ) { foreach_hash( sw->forwarding_db, delete_forwarding_entry, NULL ); delete_hash( sw->forwarding_db ); sw->forwarding_db = create_hash( compare_mac, hash_mac ); }
static void delete_switch( known_switch *sw ) { foreach_hash( sw->forwarding_db, delete_forwarding_entry, NULL ); delete_hash( sw->forwarding_db ); xfree( sw ); }
static void update_all_switches( void *switch_db ) { foreach_hash( switch_db, update_all_entries, NULL ); }
static void age_fdb( void *user_data ) { hash_table *fdb = user_data; foreach_hash( fdb, age_fdb_entry, fdb ); }
void delete_counter( hash_table *db ) { foreach_hash( db, free_each_value, NULL ); delete_hash( db ); }
void foreach_counter( hash_table *db, void function( uint8_t *, counter *, void * ), void *user_data ) { foreach_hash( db, ( void ( * )( void *, void *, void * ) ) function, user_data ); }
static void update_forwarding_db( void *forwarding_db ) { foreach_hash( forwarding_db, age_forwarding_db, forwarding_db ); }