+ /*
+ * a this point 'ctx' has the DPO the path contributed, plus
+ * any labels from path extensions.
+ * check if there are any interpose sources that want to contribute
+ */
+ if (n_nhs < vec_len(ctx->next_hops))
+ {
+ /*
+ * the path contributed a new choice.
+ */
+ const fib_entry_src_vft_t *vft;
+
+ vft = fib_entry_src_get_vft(ctx->esrc);
+
+ if (NULL != vft->fesv_contribute_interpose)
+ {
+ const dpo_id_t *interposer;
+
+ interposer = vft->fesv_contribute_interpose(ctx->esrc,
+ ctx->fib_entry);
+
+ if (NULL != interposer)
+ {
+ dpo_id_t clone = DPO_INVALID;
+
+ dpo_mk_interpose(interposer,
+ &ctx->next_hops[n_nhs].path_dpo,
+ &clone);
+
+ dpo_copy(&ctx->next_hops[n_nhs].path_dpo, &clone);
+ dpo_reset(&clone);
+ }
+ }
+ }
+