Support IPv4 multicast in P4 fabric pipeline
- Multicast can use the same table as unicast. Merge into one.
- Allow masked destination MAC in classifier table
Note:
- Pipeliner now translates all exact MAC match to masked match with FF:FF:FF:FF:FF:FF mask.
- Interpreter now only uses masked src/dst MAC
Change-Id: Ibd27ebfb2d72ba929031f07a29927eb6f1844f11
(cherry picked from commit 0865779b66a59a623856b1353615e462af5575c5)
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json b/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
index cd54f59..e8ad083 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
@@ -703,10 +703,10 @@
"binding" : "FabricIngress.forwarding.mpls"
},
{
- "name" : "FabricIngress.forwarding.unicast_v4_counter",
+ "name" : "FabricIngress.forwarding.routing_v4_counter",
"id" : 4,
"is_direct" : true,
- "binding" : "FabricIngress.forwarding.unicast_v4"
+ "binding" : "FabricIngress.forwarding.routing_v4"
},
{
"name" : "FabricIngress.forwarding.acl_counter",
@@ -1252,7 +1252,7 @@
]
},
{
- "name" : "FabricIngress.forwarding.set_next_id_unicast_v4",
+ "name" : "FabricIngress.forwarding.set_next_id_routing_v4",
"id" : 14,
"runtime_data" : [
{
@@ -3497,7 +3497,7 @@
"mask" : null
},
{
- "match_type" : "exact",
+ "match_type" : "ternary",
"name" : "hdr.ethernet.dst_addr",
"target" : ["ethernet", "dst_addr"],
"mask" : null
@@ -3509,7 +3509,7 @@
"mask" : null
}
],
- "match_type" : "exact",
+ "match_type" : "ternary",
"type" : "simple",
"max_size" : 1024,
"with_counters" : true,
@@ -3655,13 +3655,13 @@
}
},
{
- "name" : "FabricIngress.forwarding.unicast_v4",
+ "name" : "FabricIngress.forwarding.routing_v4",
"id" : 9,
"source_info" : {
"filename" : "include/control/forwarding.p4",
"line" : 87,
"column" : 10,
- "source_fragment" : "unicast_v4"
+ "source_fragment" : "routing_v4"
},
"key" : [
{
@@ -3678,10 +3678,10 @@
"support_timeout" : false,
"direct_meters" : null,
"action_ids" : [14, 2],
- "actions" : ["FabricIngress.forwarding.set_next_id_unicast_v4", "NoAction"],
+ "actions" : ["FabricIngress.forwarding.set_next_id_routing_v4", "NoAction"],
"base_default_next" : "FabricIngress.forwarding.acl",
"next_tables" : {
- "FabricIngress.forwarding.set_next_id_unicast_v4" : "FabricIngress.forwarding.acl",
+ "FabricIngress.forwarding.set_next_id_routing_v4" : "FabricIngress.forwarding.acl",
"NoAction" : "FabricIngress.forwarding.acl"
},
"default_entry" : {
@@ -4272,7 +4272,7 @@
"id" : 2,
"source_info" : {
"filename" : "include/control/forwarding.p4",
- "line" : 235,
+ "line" : 186,
"column" : 11,
"source_fragment" : "fabric_metadata.fwd_type == FWD_BRIDGING"
},
@@ -4298,7 +4298,7 @@
"id" : 3,
"source_info" : {
"filename" : "include/control/forwarding.p4",
- "line" : 236,
+ "line" : 187,
"column" : 17,
"source_fragment" : "fabric_metadata.fwd_type == FWD_MPLS"
},
@@ -4324,7 +4324,7 @@
"id" : 4,
"source_info" : {
"filename" : "include/control/forwarding.p4",
- "line" : 250,
+ "line" : 193,
"column" : 17,
"source_fragment" : "fabric_metadata.fwd_type == FWD_IPV4_UNICAST"
},
@@ -4342,7 +4342,7 @@
}
}
},
- "true_next" : "FabricIngress.forwarding.unicast_v4",
+ "true_next" : "FabricIngress.forwarding.routing_v4",
"false_next" : "FabricIngress.forwarding.acl"
},
{