Signed-off-by: IWAMOTO Toshihiro <[email protected]>
---
 ryu/ofproto/nicira_ext.py   |    1 +
 ryu/ofproto/nx_actions.py   |   40 ++++++++++++++++++++++++++++++++++++++++
 ryu/ofproto/ofproto_v1_3.py |    1 +
 ryu/ofproto/ofproto_v1_5.py |    1 +
 4 files changed, 43 insertions(+)

diff --git a/ryu/ofproto/nicira_ext.py b/ryu/ofproto/nicira_ext.py
index 5c26194..f96c887 100644
--- a/ryu/ofproto/nicira_ext.py
+++ b/ryu/ofproto/nicira_ext.py
@@ -42,6 +42,7 @@ NXAST_EXIT = 17
 NXAST_DEC_TTL = 18
 NXAST_FIN_TIMEOUT = 19
 NXAST_CONTROLLER = 20
+NXAST_CONJUNCTION = 34
 
 NX_ACTION_RESUBMIT_PACK_STR = '!HHIHHB3x'
 NX_ACTION_RESUBMIT_SIZE = 16
diff --git a/ryu/ofproto/nx_actions.py b/ryu/ofproto/nx_actions.py
index 1f2324e..4a95538 100644
--- a/ryu/ofproto/nx_actions.py
+++ b/ryu/ofproto/nx_actions.py
@@ -341,6 +341,45 @@ def generate(ofp_name, ofpp_name):
             msg_pack_into('!%ds' % len(data), buf, offset + payload_offset,
                           bytes(data))
 
+    class NXActionConjunction(NXAction):
+        _subtype = nicira_ext.NXAST_CONJUNCTION
+
+        # clause, n_clauses, id
+        _fmt_str = '!BBI'
+
+        def __init__(self,
+                     clause,
+                     n_clauses,
+                     id_,
+                     type_=None, len_=None, experimenter=None, subtype=None):
+            super(NXActionConjunction, self).__init__()
+            self.clause = clause
+            self.n_clauses = n_clauses
+            self.id = id_
+
+        @classmethod
+        def parse(cls, buf):
+            (clause,
+             n_clauses,
+             id_,) = struct.unpack_from(
+                NXActionConjunction._fmt_str, buf, 0)
+            return cls(clause, n_clauses, id_)
+
+        def serialize(self, buf, offset):
+            data = bytearray()
+            msg_pack_into(NXActionConjunction._fmt_str, data, 0,
+                          self.clause,
+                          self.n_clauses,
+                          self.id)
+            payload_offset = (
+                ofp.OFP_ACTION_EXPERIMENTER_HEADER_SIZE +
+                struct.calcsize(NXAction._fmt_str)
+            )
+            self.len = utils.round_up(payload_offset + len(data), 8)
+            super(NXActionConjunction, self).serialize(buf, offset)
+            msg_pack_into('!%ds' % len(data), buf, offset + payload_offset,
+                          bytes(data))
+
     def add_attr(k, v):
         v.__module__ = ofpp.__name__  # Necessary for stringify stuff
         setattr(ofpp, k, v)
@@ -351,6 +390,7 @@ def generate(ofp_name, ofpp_name):
     classes = [
         'NXActionRegMove',
         'NXActionLearn',
+        'NXActionConjunction',
         '_NXFlowSpec',  # exported for testing
         'NXFlowSpecMatch',
         'NXFlowSpecLoad',
diff --git a/ryu/ofproto/ofproto_v1_3.py b/ryu/ofproto/ofproto_v1_3.py
index a1eefb2..f6da98a 100644
--- a/ryu/ofproto/ofproto_v1_3.py
+++ b/ryu/ofproto/ofproto_v1_3.py
@@ -1192,6 +1192,7 @@ oxm_types = [
     oxm_fields.ONFExperimenter('actset_output', 43, type_desc.Int4),
     oxm_fields.NiciraExtended1('tun_ipv4_src', 31, type_desc.IPv4Addr),
     oxm_fields.NiciraExtended1('tun_ipv4_dst', 32, type_desc.IPv4Addr),
+    oxm_fields.NiciraExtended1('conj_id', 37, type_desc.Int4),
 
     # The following definition is merely for testing 64-bit experimenter OXMs.
     # Following Open vSwitch, we use dp_hash for this purpose.
diff --git a/ryu/ofproto/ofproto_v1_5.py b/ryu/ofproto/ofproto_v1_5.py
index f9a3668..6043a2e 100644
--- a/ryu/ofproto/ofproto_v1_5.py
+++ b/ryu/ofproto/ofproto_v1_5.py
@@ -435,6 +435,7 @@ oxm_types = [
     oxm_fields.OpenFlowBasic('packet_type', 44, type_desc.Int4),
     oxm_fields.NiciraExtended1('tun_ipv4_src', 31, type_desc.IPv4Addr),
     oxm_fields.NiciraExtended1('tun_ipv4_dst', 32, type_desc.IPv4Addr),
+    oxm_fields.NiciraExtended1('conj_id', 37, type_desc.Int4),
 ]
 
 oxm_fields.generate(__name__)
-- 
1.7.10.4


------------------------------------------------------------------------------
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to