Change-Id: Ie8f6bb4fcd3e4fa269e86a77d2f21c87f372b783
Signed-off-by: Florin Coras <fcoras@cisco.com>
{
esrc->fes_entry_flags &= ~FIB_ENTRY_FLAG_ATTACHED;
}
{
esrc->fes_entry_flags &= ~FIB_ENTRY_FLAG_ATTACHED;
}
+ if (rpath->frp_flags & FIB_ROUTE_PATH_DEAG)
+ {
+ esrc->fes_entry_flags |= FIB_ENTRY_FLAG_LOOSE_URPF_EXEMPT;
+ }
}
if (fib_route_attached_cross_table(fib_entry, rpath))
{
}
if (fib_route_attached_cross_table(fib_entry, rpath))
{
path->fp_type = FIB_PATH_TYPE_BIER_TABLE;
path->bier_table.fp_bier_tbl = rpath->frp_bier_tbl;
}
path->fp_type = FIB_PATH_TYPE_BIER_TABLE;
path->bier_table.fp_bier_tbl = rpath->frp_bier_tbl;
}
+ else if (rpath->frp_flags & FIB_ROUTE_PATH_DEAG)
+ {
+ path->fp_type = FIB_PATH_TYPE_DEAG;
+ path->deag.fp_tbl_id = rpath->frp_fib_index;
+ }
else if (~0 != rpath->frp_sw_if_index)
{
if (ip46_address_is_zero(&rpath->frp_addr))
else if (~0 != rpath->frp_sw_if_index)
{
if (ip46_address_is_zero(&rpath->frp_addr))
{
rpath->frp_proto = *payload_proto;
rpath->frp_sw_if_index = ~0;
{
rpath->frp_proto = *payload_proto;
rpath->frp_sw_if_index = ~0;
+ rpath->frp_flags |= FIB_ROUTE_PATH_DEAG;
}
else if (unformat (input, "resolve-via-host"))
{
}
else if (unformat (input, "resolve-via-host"))
{
* A path that resolves via a BIER impostion object
*/
FIB_ROUTE_PATH_BIER_IMP = (1 << 12),
* A path that resolves via a BIER impostion object
*/
FIB_ROUTE_PATH_BIER_IMP = (1 << 12),
+ /**
+ * A path that resolves via another table
+ */
+ FIB_ROUTE_PATH_DEAG = (1 << 13),
} fib_route_path_flags_t;
/**
} fib_route_path_flags_t;
/**
path_flags |= FIB_ROUTE_PATH_UDP_ENCAP;
path.frp_udp_encap_id = next_hop_id;
}
path_flags |= FIB_ROUTE_PATH_UDP_ENCAP;
path.frp_udp_encap_id = next_hop_id;
}
+ if (path.frp_sw_if_index == ~0 && ip46_address_is_zero (&path.frp_addr)
+ && path.frp_fib_index != ~0)
+ {
+ path_flags |= FIB_ROUTE_PATH_DEAG;
+ }
path.frp_flags = path_flags;
path.frp_flags = path_flags;