void free_referral_cache_entry_recursive(lispd_referral_cache_entry *referral_cache_entry)
{
    free_mapping_elt (referral_cache_entry->mapping);
    if (referral_cache_entry->expiry_ddt_cache_timer != NULL){
        stop_timer(referral_cache_entry->expiry_ddt_cache_timer);
    }
    remove_referral_cache_entry_from_parent_node(referral_cache_entry);
    free_lispd_referral_cache_list(referral_cache_entry->children_nodes);
    free (referral_cache_entry);
}
Esempio n. 2
0
/*
 * Remove a referral and all its offspring
 */
int referral_expiry(
        timer   *t,
        void    *arg)
{
    lispd_referral_cache_entry *referral_entry = (lispd_referral_cache_entry *)arg;

    lispd_log_msg(LISP_LOG_DEBUG_1,"referral_expiry: The referral entry with prefix %s/%d has expired. "
            "Removing it and all its offspring", get_char_from_lisp_addr_t(referral_entry->mapping->eid_prefix),
            referral_entry->mapping->eid_prefix_length);

    remove_referral_cache_entry_from_parent_node(referral_entry);
    del_referral_cache_entry_from_db(referral_entry);
    dump_referral_cache_db(LISP_LOG_DEBUG_3);
    return (GOOD);
}