Esempio n. 1
0
inline void
fwd_entry_del(fwd_entry_t *fwd_entry)
{
    if (fwd_entry == NULL){
        return;
    }
    lisp_addr_del(fwd_entry->srloc);
    lisp_addr_del(fwd_entry->drloc);
    free(fwd_entry);
}
Esempio n. 2
0
/*
 * Release memory of an iface_locators structure
 * @param if_loct Element to be released
 */
void
iface_locators_del(iface_locators *if_loct)
{
    free(if_loct->iface_name);
    glist_destroy(if_loct->map_loc_entries);
    glist_destroy(if_loct->ipv4_locators);
    glist_destroy(if_loct->ipv6_locators);
    if (if_loct->ipv4_prev_addr != NULL){
        lisp_addr_del(if_loct->ipv4_prev_addr);
    }
    if (if_loct->ipv6_prev_addr != NULL){
        lisp_addr_del(if_loct->ipv6_prev_addr);
    }
    free(if_loct);
}
Esempio n. 3
0
void
policy_loct_parm_del(fwd_policy_loct_parm *pol_loct)
{
    lisp_addr_del(pol_loct->rloc_addr);
    shash_destroy(pol_loct->paramiters);
    free(pol_loct);
}
Esempio n. 4
0
void
policy_map_parm_del (fwd_policy_map_parm *pol_map)
{
    lisp_addr_del(pol_map->eid_prefix);
    shash_destroy(pol_map->paramiters);
    glist_destroy(pol_map->locators);
    free(pol_map);
}
Esempio n. 5
0
File: prefixes.c Progetto: biels/oor
/*
 * If prefix b is contained in prefix a, then return TRUE. Otherwise return FALSE.
 * If both prefixs are the same it also returns TRUE
 */
int
pref_is_prefix_b_part_of_a (lisp_addr_t *a_prefix,lisp_addr_t *b_prefix)
{
    lisp_addr_t * a_network_addr;
    lisp_addr_t * b_network_addr_prefix_a;
    int a_pref_len;
    int b_pref_len;
    int res;


    if (!lisp_addr_is_ip_pref(a_prefix) || !lisp_addr_is_ip_pref(b_prefix)){
        return FALSE;
    }

    if (lisp_addr_ip_afi(a_prefix) != lisp_addr_ip_afi(b_prefix)){
        return FALSE;
    }

    a_pref_len = lisp_addr_get_plen(a_prefix);
    b_pref_len = lisp_addr_get_plen(b_prefix);

    if (a_pref_len > b_pref_len){
        return FALSE;
    }

    a_network_addr = pref_get_network_address(a_prefix);

    lisp_addr_set_plen(b_prefix, a_pref_len);

    b_network_addr_prefix_a = pref_get_network_address(b_prefix);

    lisp_addr_set_plen(b_prefix, b_pref_len);

    if (lisp_addr_cmp (a_network_addr, b_network_addr_prefix_a) == 0){
        res = TRUE;
    }else{
        res = FALSE;
    }
    lisp_addr_del(a_network_addr);
    lisp_addr_del(b_network_addr_prefix_a);

    return (res);
}
Esempio n. 6
0
void
locator_del(locator_t *locator)
{
    if (!locator) {
        return;
    }

    lisp_addr_del(locator->addr);
    free(locator);
    locator = NULL;
}
Esempio n. 7
0
void
lisp_site_prefix_del(lisp_site_prefix_t *sp)
{
    if (!sp)
        return;
    if (sp->eid_prefix)
        lisp_addr_del(sp->eid_prefix);
    if (sp->key)
        free(sp->key);
    free(sp);
}
Esempio n. 8
0
File: prefixes.c Progetto: biels/oor
int
pref_conv_to_netw_pref(lisp_addr_t *addr)
{
    lisp_addr_t *ip_pref, *net_pref;
    ip_pref = lisp_addr_get_ip_pref_addr(addr);
    if (!ip_pref){
        return (BAD);
    }
    net_pref = pref_get_network_prefix(ip_pref);
    lisp_addr_copy(ip_pref, net_pref);
    lisp_addr_del(net_pref);

    return (GOOD);
}
Esempio n. 9
0
int
lisp_msg_parse_itr_rlocs(lbuf_t *b, glist_t *rlocs)
{
    lisp_addr_t *tloc;
    void *mreq_hdr = lbuf_lisp(b);
    int i;

    tloc = lisp_addr_new();
    for (i = 0; i < MREQ_ITR_RLOC_COUNT(mreq_hdr) + 1; i++) {
        if (lisp_msg_parse_addr(b, tloc) != GOOD) {
            return(BAD);
        }
        glist_add(lisp_addr_clone(tloc), rlocs);
        OOR_LOG(LDBG_1," itr-rloc: %s", lisp_addr_to_char(tloc));
    }
    lisp_addr_del(tloc);
    return(GOOD);
}