diff --git a/dash-pipeline/bmv2/dash_metadata.p4 b/dash-pipeline/bmv2/dash_metadata.p4 index 044aa1c52..6e863ea62 100644 --- a/dash-pipeline/bmv2/dash_metadata.p4 +++ b/dash-pipeline/bmv2/dash_metadata.p4 @@ -11,7 +11,9 @@ enum bit<32> dash_routing_actions_t { NAT = (1 << 1), NAT46 = (1 << 2), NAT64 = (1 << 3), - NAT_PORT = (1 << 4) + NAT_PORT = (1 << 4), + TUNNEL = (1 << 5), + REVERSE_TUNNEL = (1 << 6), }; enum bit<16> dash_direction_t { @@ -320,6 +322,7 @@ struct metadata_t { encap_data_t encap_data; // tunnel_data is used by dash_tunnel_id encap_data_t tunnel_data; + IPv4Address reverse_tunnel_sip; overlay_rewrite_data_t overlay_data; bit<16> dash_tunnel_id; bit<32> meter_class; diff --git a/dash-pipeline/bmv2/dash_pipeline.p4 b/dash-pipeline/bmv2/dash_pipeline.p4 index 6a4d8a8cf..792746b7f 100644 --- a/dash-pipeline/bmv2/dash_pipeline.p4 +++ b/dash-pipeline/bmv2/dash_pipeline.p4 @@ -80,8 +80,7 @@ control dash_ingress( bit<1> full_flow_resimulation_requested, bit<64> max_resimulated_flow_per_second, @SaiVal[type="sai_object_id_t"] bit<16> outbound_routing_group_id, - @SaiVal[type="sai_ip_address_t"] IPv4ORv6Address reverse_tunnel_sip, - bit<1> reverse_tunnel_sip_is_v6, + @SaiVal[type="sai_ip_address_t"] IPv4Address reverse_tunnel_sip, bit<1> is_ha_flow_owner) { meta.eni_data.cps = cps; @@ -101,6 +100,9 @@ control dash_ingress( meta.encap_data.vni = vm_vni; meta.vnet_id = vnet_id; + meta.reverse_tunnel_sip = reverse_tunnel_sip; + meta.routing_actions = meta.routing_actions | dash_routing_actions_t.REVERSE_TUNNEL; + if (meta.is_overlay_ip_v6 == 1) { if (meta.direction == dash_direction_t.OUTBOUND) { ACL_GROUPS_COPY_TO_META(outbound_v6);