switch (path->fp_type)
{
+ case FIB_PATH_TYPE_ATTACHED_NEXT_HOP:
+ {
+ dpo_id_t tmp = DPO_INVALID;
+
+ dpo_copy(&tmp, dpo);
+ dpo_set(dpo,
+ DPO_MPLS_DISPOSITION,
+ payload_proto,
+ mpls_disp_dpo_create(payload_proto, ~0, &tmp));
+ dpo_reset(&tmp);
+ break;
+ }
case FIB_PATH_TYPE_DEAG:
{
dpo_id_t tmp = DPO_INVALID;
}
case FIB_PATH_TYPE_RECEIVE:
case FIB_PATH_TYPE_ATTACHED:
- case FIB_PATH_TYPE_ATTACHED_NEXT_HOP:
case FIB_PATH_TYPE_RECURSIVE:
case FIB_PATH_TYPE_INTF_RX:
case FIB_PATH_TYPE_UDP_ENCAP:
api_rpath->rpath.frp_preference = path->fp_preference;
api_rpath->rpath.frp_proto = path->fp_nh_proto;
api_rpath->rpath.frp_sw_if_index = ~0;
- api_rpath->dpo = path->exclusive.fp_ex_dpo;
+ api_rpath->dpo = path->fp_dpo;
+
switch (path->fp_type)
{
case FIB_PATH_TYPE_RECEIVE:
api_rpath->rpath.frp_addr = path->receive.fp_addr;
api_rpath->rpath.frp_sw_if_index = path->receive.fp_interface;
- api_rpath->dpo = path->fp_dpo;
break;
case FIB_PATH_TYPE_ATTACHED:
api_rpath->rpath.frp_sw_if_index = path->attached.fp_interface;
- api_rpath->dpo = path->fp_dpo;
break;
case FIB_PATH_TYPE_ATTACHED_NEXT_HOP:
api_rpath->rpath.frp_sw_if_index = path->attached_next_hop.fp_interface;
break;
case FIB_PATH_TYPE_DEAG:
api_rpath->rpath.frp_fib_index = path->deag.fp_tbl_id;
- api_rpath->dpo = path->fp_dpo;
break;
case FIB_PATH_TYPE_RECURSIVE:
api_rpath->rpath.frp_addr = path->recursive.fp_nh.fp_ip;
default:
break;
}
+
return (FIB_PATH_LIST_WALK_CONTINUE);
}