Improvement in fabric.p4 and bng.p4
- fabric.p4 now supports double tagged hosts
- bng.p4 now only manages PPPoE termination
- bng_ingress moved at the end of the fabric pipeline
Change-Id: Iff62238fde9ec6ddf7311312a98c041e3ab3aa8d
diff --git a/pipelines/fabric/src/main/resources/include/header.p4 b/pipelines/fabric/src/main/resources/include/header.p4
index 11204e8..09df685 100644
--- a/pipelines/fabric/src/main/resources/include/header.p4
+++ b/pipelines/fabric/src/main/resources/include/header.p4
@@ -159,17 +159,27 @@
struct bng_meta_t {
bit<2> type; // upstream or downstream
bit<32> line_id; // subscriber line
+ bit<16> pppoe_session_id;
bit<32> ds_meter_result; // for downstream metering
}
#endif // WITH_BNG
//Custom metadata definition
struct fabric_metadata_t {
- bit<16> eth_type;
+ bit<16> last_eth_type;
+ _BOOL is_ipv4;
+ _BOOL is_ipv6;
+ _BOOL is_mpls;
bit<16> ip_eth_type;
vlan_id_t vlan_id;
bit<3> vlan_pri;
bit<1> vlan_cfi;
+#ifdef WITH_DOUBLE_VLAN_TERMINATION
+ _BOOL push_double_vlan;
+ vlan_id_t inner_vlan_id;
+ bit<3> inner_vlan_pri;
+ bit<1> inner_vlan_cfi;
+#endif // WITH_DOUBLE_VLAN_TERMINATION
mpls_label_t mpls_label;
bit<8> mpls_ttl;
_BOOL skip_forwarding;
@@ -195,9 +205,9 @@
struct parsed_headers_t {
ethernet_t ethernet;
vlan_tag_t vlan_tag;
-#if defined(WITH_XCONNECT) || defined(WITH_BNG)
+#if defined(WITH_XCONNECT) || defined(WITH_BNG) || defined(WITH_DOUBLE_VLAN_TERMINATION)
vlan_tag_t inner_vlan_tag;
-#endif // WITH_XCONNECT || WITH_BNG
+#endif // WITH_XCONNECT || WITH_BNG || WITH_DOUBLE_VLAN_TERMINATION
#ifdef WITH_BNG
pppoe_t pppoe;
#endif // WITH_BNG