&session->key.cs_ip[VLIB_RX]);
rsession->value.cs_ts_index = session->value.cs_ts_index;
rsession->value.cs_lbi = INDEX_INVALID;
- rsession->value.flags = rsession_flags;
+ rsession->value.flags = rsession_flags | CNAT_SESSION_IS_RETURN;
rsession->value.cs_port[VLIB_TX] = session->key.cs_port[VLIB_RX];
rsession->value.cs_port[VLIB_RX] = session->key.cs_port[VLIB_TX];
session->value.cs_port[VLIB_TX] =
clib_host_to_net_u16 (trk0->ct_ep[VLIB_TX].ce_port);
session->value.cs_port[VLIB_RX] = udp0->src_port;
+ session->value.flags = 0;
if (trk0->ct_flags & CNAT_TRK_FLAG_NO_NAT)
{
session->value.dpoi_next_node = ct->ct_lb.dpoi_next_node;
session->value.cs_lbi = dpoi_index;
+ session->value.flags = 0;
rv = cspm->vip_policy (vm, b, session, &rsession_flags, ct, ctx);
if (CNAT_SOURCE_ERROR_USE_DEFAULT == rv)
*/
CNAT_SESSION_FLAG_NO_CLIENT = (1 << 2),
+ /* Do not actually translate the packet but still forward it
+ * Used for Maglev, with an encap */
CNAT_SESSION_FLAG_NO_NAT = (1 << 3),
+
+ /* Debug flag marking return sessions */
+ CNAT_SESSION_IS_RETURN = (1 << 4),
} cnat_session_flag_t;
typedef enum cnat_session_location_t_