X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Ffib%2Ffib_attached_export.c;h=c6ba0575a04b11787c9ad7d8b6db1ae25f80dc55;hb=6160f2ddb20c96a655eaa959cf7f4f4b2ebed544;hp=4a33b8897f59bf03dd128be95a21ead29a3adb76;hpb=47d41ad62c5d6008e72d2e9c137cf8f49ca86353;p=vpp.git diff --git a/src/vnet/fib/fib_attached_export.c b/src/vnet/fib/fib_attached_export.c index 4a33b8897f5..c6ba0575a04 100644 --- a/src/vnet/fib/fib_attached_export.c +++ b/src/vnet/fib/fib_attached_export.c @@ -106,8 +106,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); - clib_memset(export, 0, sizeof(*export)); + pool_get_zero(fib_ae_export_pool, export); fed->fd_index = (export - fib_ae_export_pool); export->faee_ei = connected; @@ -205,7 +204,7 @@ fib_entry_import_add (fib_ae_import_t *import, /** * Call back when walking a connected prefix's covered prefixes for import */ -static int +static walk_rc_t fib_entry_covered_walk_import (fib_entry_t *cover, fib_node_index_t covered, void *ctx) @@ -214,7 +213,7 @@ fib_entry_covered_walk_import (fib_entry_t *cover, fib_entry_import_add(import, covered); - return (0); + return (WALK_CONTINUE); } /* @@ -249,13 +248,14 @@ fib_attached_export_import (fib_entry_t *fib_entry, */ fei = fib_entry_get_index(fib_entry); - pool_get(fib_ae_import_pool, import); + pool_get_zero(fib_ae_import_pool, import); import->faei_import_fib = fib_entry->fe_fib_index; import->faei_export_fib = export_fib; import->faei_prefix = fib_entry->fe_prefix; import->faei_import_entry = fib_entry_get_index(fib_entry); import->faei_export_sibling = ~0; + import->faei_exporter = FIB_NODE_INDEX_INVALID; /* * do an exact match in the export table @@ -273,7 +273,6 @@ fib_attached_export_import (fib_entry_t *fib_entry, import->faei_export_entry = fib_table_lookup(import->faei_export_fib, &import->faei_prefix); - import->faei_exporter = FIB_NODE_INDEX_INVALID; } else { @@ -379,6 +378,7 @@ fib_attached_export_purge (fib_entry_t *fib_entry) */ if (0 == --export->faee_locks) { + vec_free (export->faee_importers); pool_put(fib_ae_export_pool, export); fib_entry_delegate_remove(export_entry, FIB_ENTRY_DELEGATE_ATTACHED_EXPORT);