X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Ffib%2Ffib_attached_export.c;h=feb304bea3630a18eba144053adb7c81bcb22ee6;hb=7c03ed4;hp=cc8ebc8653e3bc399730b732f8a2b3af027cff8d;hpb=88fc83eb716bf07f4634de6de5b569f795a56418;p=vpp.git diff --git a/src/vnet/fib/fib_attached_export.c b/src/vnet/fib/fib_attached_export.c index cc8ebc8653e..feb304bea36 100644 --- a/src/vnet/fib/fib_attached_export.c +++ b/src/vnet/fib/fib_attached_export.c @@ -20,6 +20,7 @@ #include #include #include +#include /** * A description of the need to import routes from the export table @@ -106,7 +107,7 @@ fib_entry_ae_add_or_lock (fib_node_index_t connected) fed = fib_entry_delegate_find_or_add(entry, FIB_ENTRY_DELEGATE_ATTACHED_EXPORT); pool_get(fib_ae_export_pool, export); - memset(export, 0, sizeof(*export)); + clib_memset(export, 0, sizeof(*export)); fed->fd_index = (export - fib_ae_export_pool); export->faee_ei = connected; @@ -125,7 +126,6 @@ static void fib_entry_import_remove (fib_ae_import_t *import, fib_node_index_t entry_index) { - fib_prefix_t prefix; u32 index; /* @@ -138,10 +138,8 @@ fib_entry_import_remove (fib_ae_import_t *import, /* * this is an entry that was previsouly imported */ - fib_entry_get_prefix(entry_index, &prefix); - fib_table_entry_special_remove(import->faei_import_fib, - &prefix, + fib_entry_get_prefix(entry_index), FIB_SOURCE_AE); fib_entry_unlock(entry_index); @@ -154,7 +152,7 @@ fib_entry_import_add (fib_ae_import_t *import, fib_node_index_t entry_index) { fib_node_index_t *existing; - fib_prefix_t prefix; + const fib_prefix_t *prefix; /* * ensure we only add the exported entry once, since @@ -172,22 +170,22 @@ fib_entry_import_add (fib_ae_import_t *import, * this is the first time this export entry has been imported * Add it to the import FIB and to the list of importeds */ - fib_entry_get_prefix(entry_index, &prefix); + prefix = fib_entry_get_prefix(entry_index); /* * don't import entries that have the same prefix the import entry */ - if (0 != fib_prefix_cmp(&prefix, + if (0 != fib_prefix_cmp(prefix, &import->faei_prefix)) { const dpo_id_t *dpo; dpo = fib_entry_contribute_ip_forwarding(entry_index); - if (dpo_id_is_valid(dpo)) + if (dpo_id_is_valid(dpo) && !dpo_is_drop(dpo)) { fib_table_entry_special_dpo_add(import->faei_import_fib, - &prefix, + prefix, FIB_SOURCE_AE, (fib_entry_get_flags(entry_index) | FIB_ENTRY_FLAG_EXCLUSIVE), @@ -336,12 +334,8 @@ fib_attached_export_purge (fib_entry_t *fib_entry) */ vec_foreach(import_index, import->faei_importeds) { - fib_prefix_t prefix; - - fib_entry_get_prefix(*import_index, &prefix); - fib_table_entry_delete(import->faei_import_fib, - &prefix, + fib_entry_get_prefix(*import_index), FIB_SOURCE_AE); fib_entry_unlock(*import_index); }