GBP: Sclass to src-epg conversions

Change-Id: Ica88268fd6a6ee01da7e9219bb4e81f22ed2fd4b
Signed-off-by: Neale Ranns <nranns@cisco.com>
diff --git a/src/vnet/buffer.h b/src/vnet/buffer.h
index 89dd845..0669651 100644
--- a/src/vnet/buffer.h
+++ b/src/vnet/buffer.h
@@ -389,7 +389,11 @@
   {
     u8 __unused;
     u8 flags;
-    u16 src_epg;
+    union
+    {
+      u16 src_epg;
+      u16 sclass;
+    };
   } gbp;
 
   union
diff --git a/src/vnet/l2/l2_input.h b/src/vnet/l2/l2_input.h
index 93da127..12e7e54 100644
--- a/src/vnet/l2/l2_input.h
+++ b/src/vnet/l2/l2_input.h
@@ -114,6 +114,7 @@
  _(GBP_NULL_CLASSIFY, "gbp-null-classify")      \
  _(GBP_SRC_CLASSIFY,  "gbp-src-classify")       \
  _(GBP_LPM_CLASSIFY,  "l2-gbp-lpm-classify")    \
+ _(GBP_SCLASS_2_ID, "l2-gbp-sclass-2-id")         \
  _(VTR,           "l2-input-vtr")               \
  _(L2_IP_QOS_RECORD, "l2-ip-qos-record")        \
  _(VPATH,         "vpath-input-l2")             \
diff --git a/src/vnet/l2/l2_output.h b/src/vnet/l2/l2_output.h
index 74d2829..fdb6167 100644
--- a/src/vnet/l2/l2_output.h
+++ b/src/vnet/l2/l2_output.h
@@ -81,6 +81,7 @@
 #define foreach_l2output_feat \
  _(OUTPUT,            "interface-output")           \
  _(SPAN,              "span-l2-output")             \
+ _(GBP_ID_2_SCLASS,   "l2-gbp-id-2-sclass")          \
  _(GBP_POLICY_PORT,   "gbp-policy-port")            \
  _(GBP_POLICY_MAC,    "gbp-policy-mac")             \
  _(CFM,               "feature-bitmap-drop")        \
diff --git a/src/vnet/vxlan-gbp/decap.c b/src/vnet/vxlan-gbp/decap.c
index 613cb01..6c14ef7 100644
--- a/src/vnet/vxlan-gbp/decap.c
+++ b/src/vnet/vxlan-gbp/decap.c
@@ -334,7 +334,7 @@
 	    }
 
 	  vnet_buffer2 (b0)->gbp.flags = vxlan_gbp_get_gpflags (vxlan_gbp0);
-	  vnet_buffer2 (b0)->gbp.src_epg = vxlan_gbp_get_sclass (vxlan_gbp0);
+	  vnet_buffer2 (b0)->gbp.sclass = vxlan_gbp_get_sclass (vxlan_gbp0);
 
 
 	  if (PREDICT_FALSE
@@ -369,7 +369,7 @@
 	    }
 
 	  vnet_buffer2 (b1)->gbp.flags = vxlan_gbp_get_gpflags (vxlan_gbp1);
-	  vnet_buffer2 (b1)->gbp.src_epg = vxlan_gbp_get_sclass (vxlan_gbp1);
+	  vnet_buffer2 (b1)->gbp.sclass = vxlan_gbp_get_sclass (vxlan_gbp1);
 
 	  vnet_update_l2_len (b0);
 	  vnet_update_l2_len (b1);
@@ -473,7 +473,7 @@
 		(rx_counter, thread_index, stats_t0->sw_if_index, 1, len0);
 	    }
 	  vnet_buffer2 (b0)->gbp.flags = vxlan_gbp_get_gpflags (vxlan_gbp0);
-	  vnet_buffer2 (b0)->gbp.src_epg = vxlan_gbp_get_sclass (vxlan_gbp0);
+	  vnet_buffer2 (b0)->gbp.sclass = vxlan_gbp_get_sclass (vxlan_gbp0);
 
 	  /* Required to make the l2 tag push / pop code work on l2 subifs */
 	  vnet_update_l2_len (b0);
diff --git a/src/vnet/vxlan-gbp/encap.c b/src/vnet/vxlan-gbp/encap.c
index f1b839c..f8fc9b4 100644
--- a/src/vnet/vxlan-gbp/encap.c
+++ b/src/vnet/vxlan-gbp/encap.c
@@ -260,9 +260,9 @@
 	  vxlan_gbp0->gpflags = vnet_buffer2 (b0)->gbp.flags;
 	  vxlan_gbp1->gpflags = vnet_buffer2 (b1)->gbp.flags;
 	  vxlan_gbp0->sclass =
-	    clib_host_to_net_u16 (vnet_buffer2 (b0)->gbp.src_epg);
+	    clib_host_to_net_u16 (vnet_buffer2 (b0)->gbp.sclass);
 	  vxlan_gbp1->sclass =
-	    clib_host_to_net_u16 (vnet_buffer2 (b1)->gbp.src_epg);
+	    clib_host_to_net_u16 (vnet_buffer2 (b1)->gbp.sclass);
 
 	  if (csum_offload)
 	    {
@@ -324,7 +324,7 @@
 		vlib_add_trace (vm, node, b0, sizeof (*tr));
 	      tr->tunnel_index = t0 - vxm->tunnels;
 	      tr->vni = t0->vni;
-	      tr->sclass = vnet_buffer2 (b0)->gbp.src_epg;
+	      tr->sclass = vnet_buffer2 (b0)->gbp.sclass;
 	      tr->flags = vnet_buffer2 (b0)->gbp.flags;
 	    }
 
@@ -334,7 +334,7 @@
 		vlib_add_trace (vm, node, b1, sizeof (*tr));
 	      tr->tunnel_index = t1 - vxm->tunnels;
 	      tr->vni = t1->vni;
-	      tr->sclass = vnet_buffer2 (b1)->gbp.src_epg;
+	      tr->sclass = vnet_buffer2 (b1)->gbp.sclass;
 	      tr->flags = vnet_buffer2 (b1)->gbp.flags;
 	    }
 
@@ -426,7 +426,7 @@
 	  /* set source class and gpflags */
 	  vxlan_gbp0->gpflags = vnet_buffer2 (b0)->gbp.flags;
 	  vxlan_gbp0->sclass =
-	    clib_host_to_net_u16 (vnet_buffer2 (b0)->gbp.src_epg);
+	    clib_host_to_net_u16 (vnet_buffer2 (b0)->gbp.sclass);
 
 	  if (csum_offload)
 	    {
@@ -469,7 +469,7 @@
 		vlib_add_trace (vm, node, b0, sizeof (*tr));
 	      tr->tunnel_index = t0 - vxm->tunnels;
 	      tr->vni = t0->vni;
-	      tr->sclass = vnet_buffer2 (b0)->gbp.src_epg;
+	      tr->sclass = vnet_buffer2 (b0)->gbp.sclass;
 	      tr->flags = vnet_buffer2 (b0)->gbp.flags;
 	    }
 	  vlib_validate_buffer_enqueue_x1 (vm, node, next_index,