VOL-1237: Fix for OLT Pipeline not providing inner Q-in-Q tag to OLT
Change-Id: Ib1f61f0388a4ae253c140fca3e3170f65b188778
diff --git a/voltha/adapters/openolt/openolt_flow_mgr.py b/voltha/adapters/openolt/openolt_flow_mgr.py
index d098065..edda513 100644
--- a/voltha/adapters/openolt/openolt_flow_mgr.py
+++ b/voltha/adapters/openolt/openolt_flow_mgr.py
@@ -644,9 +644,14 @@
def find_next_flow(self, flow):
table_id = fd.get_goto_table_id(flow)
metadata = 0
+ # Prior to ONOS 1.13.5, Metadata contained the UNI output port number. In
+ # 1.13.5 and later, the lower 32-bits is the output port number and the
+ # upper 32-bits is the inner-vid we are looking for. Use just the lower 32
+ # bits. Allows this code to work with pre- and post-1.13.5 ONOS OltPipeline
+
for field in fd.get_ofb_fields(flow):
if field.type == fd.METADATA:
- metadata = field.table_metadata
+ metadata = field.table_metadata & 0xFFFFFFFF
if table_id is None:
return None
flows = self.logical_flows_proxy.get('/').items