summaryrefslogtreecommitdiffstats
path: root/src/vnet/fib
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2018-09-07 09:32:36 -0700
committerDamjan Marion <dmarion@me.com>2018-09-20 10:05:11 +0000
commit008dbe109ce2714be69ffb6549a0c0198a07f7d0 (patch)
tree6a4a4d7fb7c884036a6c4a1cda6e866d7087eb4c /src/vnet/fib
parentee2e58f6ea802437ed52cc3e4d59b89d92757135 (diff)
Route counters in the stats segment
route ADD API changed to return the stats segment index to use to read the counters Change-Id: I2ef41e01eaa2f9cfaa49d9c88968897793825925 Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src/vnet/fib')
-rw-r--r--src/vnet/fib/fib_entry.c10
-rw-r--r--src/vnet/fib/fib_entry.h2
-rw-r--r--src/vnet/fib/fib_table.c8
-rw-r--r--src/vnet/fib/fib_table.h11
4 files changed, 31 insertions, 0 deletions
diff --git a/src/vnet/fib/fib_entry.c b/src/vnet/fib/fib_entry.c
index 655526586cb..8d7ce00b9c0 100644
--- a/src/vnet/fib/fib_entry.c
+++ b/src/vnet/fib/fib_entry.c
@@ -1495,6 +1495,16 @@ fib_entry_set_flow_hash_config (fib_node_index_t fib_entry_index,
}
}
+u32
+fib_entry_get_stats_index (fib_node_index_t fib_entry_index)
+{
+ fib_entry_t *fib_entry;
+
+ fib_entry = fib_entry_get(fib_entry_index);
+
+ return (fib_entry->fe_lb.dpoi_index);
+}
+
static int
fib_ip4_address_compare (const ip4_address_t * a1,
const ip4_address_t * a2)
diff --git a/src/vnet/fib/fib_entry.h b/src/vnet/fib/fib_entry.h
index 61b81493756..9175a571032 100644
--- a/src/vnet/fib/fib_entry.h
+++ b/src/vnet/fib/fib_entry.h
@@ -623,6 +623,8 @@ extern void fib_entry_set_flow_hash_config(fib_node_index_t fib_entry_index,
extern void fib_entry_module_init(void);
+extern u32 fib_entry_get_stats_index(fib_node_index_t fib_entry_index);
+
/*
* unsafe... beware the raw pointer.
*/
diff --git a/src/vnet/fib/fib_table.c b/src/vnet/fib/fib_table.c
index f63edaa76f0..d8e8d63b9ae 100644
--- a/src/vnet/fib/fib_table.c
+++ b/src/vnet/fib/fib_table.c
@@ -885,6 +885,14 @@ fib_table_entry_delete_index (fib_node_index_t fib_entry_index,
fib_entry_index, prefix, source);
}
+u32
+fib_table_entry_get_stats_index(u32 fib_index,
+ const fib_prefix_t *prefix)
+{
+ return (fib_entry_get_stats_index(
+ fib_table_lookup_exact_match(fib_index, prefix)));
+}
+
fib_node_index_t
fib_table_entry_local_label_add (u32 fib_index,
const fib_prefix_t *prefix,
diff --git a/src/vnet/fib/fib_table.h b/src/vnet/fib/fib_table.h
index 8b86f8d6dd9..f13dd77c8b4 100644
--- a/src/vnet/fib/fib_table.h
+++ b/src/vnet/fib/fib_table.h
@@ -596,6 +596,17 @@ extern void fib_table_entry_delete_index(fib_node_index_t entry_index,
/**
* @brief
+ * Return the stats index for a FIB entry
+ * @param fib_index
+ * The table's FIB index
+ * @param prefix
+ * The entry's prefix's
+ */
+extern u32 fib_table_entry_get_stats_index(u32 fib_index,
+ const fib_prefix_t *prefix);
+
+/**
+ * @brief
* Flush all entries from a table for the source
*
* @param fib_index