- /*
- * Resolve via a lookup DPO.
- * FIXME. control plane should add routes with a table ID
- */
- lookup_input_t input;
- lookup_cast_t cast;
-
- cast = (path->fp_cfg_flags & FIB_PATH_CFG_FLAG_RPF_ID ?
- LOOKUP_MULTICAST :
- LOOKUP_UNICAST);
- input = (path->fp_cfg_flags & FIB_PATH_CFG_FLAG_DEAG_SRC ?
- LOOKUP_INPUT_SRC_ADDR :
- LOOKUP_INPUT_DST_ADDR);
-
- lookup_dpo_add_or_lock_w_fib_index(path->deag.fp_tbl_id,
- path->fp_nh_proto,
- cast,
- input,
- LOOKUP_TABLE_FROM_CONFIG,
- &path->fp_dpo);
- break;
+ if (DPO_PROTO_BIER == path->fp_nh_proto)
+ {
+ bier_disp_table_contribute_forwarding(path->deag.fp_tbl_id,
+ &path->fp_dpo);
+ }
+ else
+ {
+ /*
+ * Resolve via a lookup DPO.
+ * FIXME. control plane should add routes with a table ID
+ */
+ lookup_input_t input;
+ lookup_cast_t cast;
+
+ cast = (path->fp_cfg_flags & FIB_PATH_CFG_FLAG_RPF_ID ?
+ LOOKUP_MULTICAST :
+ LOOKUP_UNICAST);
+ input = (path->fp_cfg_flags & FIB_PATH_CFG_FLAG_DEAG_SRC ?
+ LOOKUP_INPUT_SRC_ADDR :
+ LOOKUP_INPUT_DST_ADDR);
+
+ lookup_dpo_add_or_lock_w_fib_index(path->deag.fp_tbl_id,
+ path->fp_nh_proto,
+ cast,
+ input,
+ LOOKUP_TABLE_FROM_CONFIG,
+ &path->fp_dpo);
+ }
+ break;