/**
* @brief
- * Add a 'special' entry to the FIB that links to the adj passed
+ * Add a 'special' entry to the FIB.
* A special entry is an entry that the FIB is not expect to resolve
* via the usual mechanisms (i.e. recurisve or neighbour adj DB lookup).
- * Instead the client/source provides the adj to link to.
+ * Instead the will link to a DPO valid for the source and/or the flags.
* This add is reference counting per-source. So n 'removes' are required
* for n 'adds', if the entry is no longer required.
+ * If the source needs to provide non-default forwarding use:
+ * fib_table_entry_special_dpo_add()
*
- * @param fib_index
+ * @param fib_index
* The index of the FIB
*
* @param prefix
* @param flags
* Flags for the entry.
*
- * @param adj_index
- * The adjacency to link to.
- *
* @return
* the index of the fib_entry_t that is created (or exists already).
*/
extern fib_node_index_t fib_table_entry_special_add(u32 fib_index,
const fib_prefix_t *prefix,
fib_source_t source,
- fib_entry_flag_t flags,
- adj_index_t adj_index);
+ fib_entry_flag_t flags);
/**
* @brief
const fib_prefix_t *prefix,
fib_source_t source,
fib_entry_flag_t flags,
- fib_protocol_t next_hop_proto,
+ dpo_proto_t next_hop_proto,
const ip46_address_t *next_hop,
u32 next_hop_sw_if_index,
u32 next_hop_fib_index,
extern void fib_table_entry_path_remove(u32 fib_index,
const fib_prefix_t *prefix,
fib_source_t source,
- fib_protocol_t next_hop_proto,
+ dpo_proto_t next_hop_proto,
const ip46_address_t *next_hop,
u32 next_hop_sw_if_index,
u32 next_hop_fib_index,
const fib_prefix_t *prefix,
fib_source_t source,
fib_entry_flag_t flags,
- fib_protocol_t next_hop_proto,
+ dpo_proto_t next_hop_proto,
const ip46_address_t *next_hop,
u32 next_hop_sw_if_index,
u32 next_hop_fib_index,
extern flow_hash_config_t fib_table_get_flow_hash_config(u32 fib_index,
fib_protocol_t proto);
+/**
+ * @brief
+ * Get the flow hash configured used by the protocol
+ *
+ * @paran proto
+ * The protocol of the FIB (and thus the entries therein)
+ *
+ * @return The flow hash config
+ */
+extern flow_hash_config_t fib_table_get_default_flow_hash_config(fib_protocol_t proto);
+
+/**
+ * @brief
+ * Set the flow hash configured used by the table
+ *
+ * @param fib_index
+ * The index of the FIB
+ *
+ * @paran proto
+ * The protocol of the FIB (and thus the entries therein)
+ *
+ * @param hash_config
+ * The flow-hash config to set
+ *
+ * @return none
+ */
+extern void fib_table_set_flow_hash_config(u32 fib_index,
+ fib_protocol_t proto,
+ flow_hash_config_t hash_config);
+
/**
* @brief
* Take a reference counting lock on the table