At Thu, 7 Jul 2016 15:51:10 +0900,
Takashi YAMAMOTO wrote:
> 
> [1  <multipart/alternative (7bit)>]
> [1.1  <text/plain; UTF-8 (7bit)>]
> this change broke dragonflow.
> https://bugs.launchpad.net/dragonflow/+bug/1599367
> 
> i thought we aimed to align with on-wire fields rather than ovs-ofctl etc.
> was the policy changed?

Sorry I haven't noticed earlier, but we need to revert this IMO.
This ofs_nbits API has been there for a while, these numbers are on
wire (as yamamoto said), and OFPActionCopyField has a similar API.

> On Mon, Jun 6, 2016 at 9:48 AM, Shinpei Muraoka <[email protected]>
> wrote:
> 
> > This patch, update the methods that are to be specified in the NXM or OXM.
> > Update the value specified in the bit format to the start and end formats.
> > Update the following NXAction.
> >
> >  - NXActionRegLoad
> >  - NXActionOutputReg
> >  - NXActionMultipath
> >  - NXActionBundle
> >  - NXActionBundleLoad
> >  - NXActionCT
> >
> > Signed-off-by: Shinpei Muraoka <[email protected]>
> > ---
> >  ryu/ofproto/nx_actions.py                          | 76
> > ++++++++++++++--------
> >  .../json/of13/ovs-ofctl-of13-action_ct.packet.json |  3 +-
> >  .../of13/ovs-ofctl-of13-action_ct_exec.packet.json |  3 +-
> >  .../of13/ovs-ofctl-of13-action_ct_nat.packet.json  |  3 +-
> >  .../ovs-ofctl-of13-action_ct_nat_v6.packet.json    |  3 +-
> >  ...s-ofctl-of13-match_load_nx_register.packet.json |  4 +-
> >  ryu/tests/unit/ofproto/test_parser_v10.py          | 59 ++++++++++++-----
> >  7 files changed, 101 insertions(+), 50 deletions(-)
> >
> > diff --git a/ryu/ofproto/nx_actions.py b/ryu/ofproto/nx_actions.py
> > index a442868..14bc479 100644
> > --- a/ryu/ofproto/nx_actions.py
> > +++ b/ryu/ofproto/nx_actions.py
> > @@ -228,11 +228,11 @@ def generate(ofp_name, ofpp_name):
> >              ]
> >          }
> >
> > -        def __init__(self, ofs, nbits, dst, value,
> > +        def __init__(self, start, end, dst, value,
> >                       type_=None, len_=None, experimenter=None,
> > subtype=None):
> >              super(NXActionRegLoad, self).__init__()
> > -            self.ofs = ofs
> > -            self.nbits = nbits
> > +            self.start = start
> > +            self.end = end
> >              self.dst = dst
> >              self.value = value
> >
> > @@ -240,11 +240,11 @@ def generate(ofp_name, ofpp_name):
> >          def parser(cls, buf):
> >              (ofs_nbits, dst, value,) = struct.unpack_from(
> >                  cls._fmt_str, buf, 0)
> > -            ofs = ofs_nbits >> 6
> > -            nbits = (ofs_nbits & ((1 << 6) - 1)) + 1
> > +            start = ofs_nbits >> 6
> > +            end = (ofs_nbits & 0x3f) + start
> >              # Right-shift instead of using oxm_parse_header for
> > simplicity...
> >              dst_name = ofp.oxm_to_user_header(dst >> 9)
> > -            return cls(ofs, nbits, dst_name, value)
> > +            return cls(start, end, dst_name, value)
> >
> >          def serialize_body(self):
> >              hdr_data = bytearray()
> > @@ -252,7 +252,7 @@ def generate(ofp_name, ofpp_name):
> >              ofp.oxm_serialize_header(n, hdr_data, 0)
> >              (dst_num,) = struct.unpack_from('!I',
> > six.binary_type(hdr_data), 0)
> >
> > -            ofs_nbits = (self.ofs << 6) + self.nbits - 1
> > +            ofs_nbits = (self.start << 6) + (self.end - self.start)
> >              data = bytearray()
> >              msg_pack_into(self._fmt_str, data, 0,
> >                            ofs_nbits, dst_num, self.value)
> > @@ -432,12 +432,14 @@ def generate(ofp_name, ofpp_name):
> >          _fmt_str = '!HIH6x'
> >
> >          def __init__(self,
> > -                     ofs_nbits,
> > +                     start,
> > +                     end,
> >                       src,
> >                       max_len,
> >                       type_=None, len_=None, experimenter=None,
> > subtype=None):
> >              super(NXActionOutputReg, self).__init__()
> > -            self.ofs_nbits = ofs_nbits
> > +            self.start = start
> > +            self.end = end
> >              self.src = src
> >              self.max_len = max_len
> >
> > @@ -447,12 +449,16 @@ def generate(ofp_name, ofpp_name):
> >               src,
> >               max_len) = struct.unpack_from(
> >                  cls._fmt_str, buf, 0)
> > -            return cls(ofs_nbits,
> > +            start = ofs_nbits >> 6
> > +            end = (ofs_nbits & 0x3f) + start
> > +            return cls(start,
> > +                       end,
> >                         src,
> >                         max_len)
> >
> >          def serialize_body(self):
> >              data = bytearray()
> > +            ofs_nbits = (self.start << 6) + (self.end - self.start)
> >              msg_pack_into(self._fmt_str, data, 0,
> >                            ofs_nbits,
> >                            self.src,
> > @@ -660,7 +666,8 @@ def generate(ofp_name, ofpp_name):
> >                       algorithm,
> >                       max_link,
> >                       arg,
> > -                     ofs_nbits,
> > +                     start,
> > +                     end,
> >                       dst,
> >                       type_=None, len_=None, experimenter=None,
> > subtype=None):
> >              super(NXActionMultipath, self).__init__()
> > @@ -669,7 +676,8 @@ def generate(ofp_name, ofpp_name):
> >              self.algorithm = algorithm
> >              self.max_link = max_link
> >              self.arg = arg
> > -            self.ofs_nbits = ofs_nbits
> > +            self.start = start
> > +            self.end = end
> >              self.dst = dst
> >
> >          @classmethod
> > @@ -682,15 +690,19 @@ def generate(ofp_name, ofpp_name):
> >               ofs_nbits,
> >               dst) = struct.unpack_from(
> >                  cls._fmt_str, buf, 0)
> > +            start = ofs_nbits >> 6
> > +            end = (ofs_nbits & 0x3f) + start
> >              return cls(fields,
> >                         basis,
> >                         algorithm,
> >                         max_link,
> >                         arg,
> > -                       ofs_nbits,
> > +                       start,
> > +                       end,
> >                         dst)
> >
> >          def serialize_body(self):
> > +            ofs_nbits = (self.start << 6) + (self.end - self.start)
> >              data = bytearray()
> >              msg_pack_into(self._fmt_str, data, 0,
> >                            self.fields,
> > @@ -698,7 +710,7 @@ def generate(ofp_name, ofpp_name):
> >                            self.algorithm,
> >                            self.max_link,
> >                            self.arg,
> > -                          self.ofs_nbits,
> > +                          ofs_nbits,
> >                            self.dst)
> >              return data
> >
> > @@ -708,7 +720,7 @@ def generate(ofp_name, ofpp_name):
> >          _fmt_str = '!HHHIHHI4x'
> >
> >          def __init__(self, algorithm, fields, basis, slave_type, n_slaves,
> > -                     ofs_nbits, dst, slaves):
> > +                     start, end, dst, slaves):
> >              super(_NXActionBundleBase, self).__init__()
> >              self.len = utils.round_up(
> >                  nicira_ext.NX_ACTION_BUNDLE_0_SIZE + len(slaves) * 2, 8)
> > @@ -718,7 +730,8 @@ def generate(ofp_name, ofpp_name):
> >              self.basis = basis
> >              self.slave_type = slave_type
> >              self.n_slaves = n_slaves
> > -            self.ofs_nbits = ofs_nbits
> > +            self.start = start
> > +            self.end = end
> >              self.dst = dst
> >
> >              assert isinstance(slaves, (list, tuple))
> > @@ -732,6 +745,8 @@ def generate(ofp_name, ofpp_name):
> >              (algorithm, fields, basis,
> >                  slave_type, n_slaves, ofs_nbits, dst) =
> > struct.unpack_from(
> >                  cls._fmt_str, buf, 0)
> > +            start = ofs_nbits >> 6
> > +            end = (ofs_nbits & 0x3f) + start
> >              slave_offset = (nicira_ext.NX_ACTION_BUNDLE_0_SIZE -
> >                              nicira_ext.NX_ACTION_HEADER_0_SIZE)
> >
> > @@ -742,9 +757,10 @@ def generate(ofp_name, ofpp_name):
> >                  slave_offset += 2
> >
> >              return cls(algorithm, fields, basis, slave_type,
> > -                       n_slaves, ofs_nbits, dst, slaves)
> > +                       n_slaves, start, end, dst, slaves)
> >
> >          def serialize_body(self):
> > +            ofs_nbits = (self.start << 6) + (self.end - self.start)
> >              data = bytearray()
> >              slave_offset = (nicira_ext.NX_ACTION_BUNDLE_0_SIZE -
> >                              nicira_ext.NX_ACTION_HEADER_0_SIZE)
> > @@ -761,7 +777,7 @@ def generate(ofp_name, ofpp_name):
> >              msg_pack_into(self._fmt_str, data, 0,
> >                            self.algorithm, self.fields, self.basis,
> >                            self.slave_type, self.n_slaves,
> > -                          self.ofs_nbits, self.dst)
> > +                          ofs_nbits, self.dst)
> >
> >              return data
> >
> > @@ -769,25 +785,25 @@ def generate(ofp_name, ofpp_name):
> >          _subtype = nicira_ext.NXAST_BUNDLE
> >
> >          def __init__(self, algorithm, fields, basis, slave_type, n_slaves,
> > -                     ofs_nbits, dst, slaves):
> > +                     start, end, dst, slaves):
> >              # NXAST_BUNDLE actions should have 'ofs_nbits' and 'dst'
> > zeroed.
> >              super(NXActionBundle, self).__init__(
> >                  algorithm, fields, basis, slave_type, n_slaves,
> > -                ofs_nbits=0, dst=0, slaves=slaves)
> > +                start=0, end=0, dst=0, slaves=slaves)
> >
> >      class NXActionBundleLoad(_NXActionBundleBase):
> >          _subtype = nicira_ext.NXAST_BUNDLE_LOAD
> >
> >          def __init__(self, algorithm, fields, basis, slave_type, n_slaves,
> > -                     ofs_nbits, dst, slaves):
> > +                     start, end, dst, slaves):
> >              super(NXActionBundleLoad, self).__init__(
> >                  algorithm, fields, basis, slave_type, n_slaves,
> > -                ofs_nbits, dst, slaves)
> > +                start, end, dst, slaves)
> >
> >      class NXActionCT(NXAction):
> >          _subtype = nicira_ext.NXAST_CT
> >
> > -        # flags, zone_src, zone_ofs_nbits (zone_imm), recirc_table,
> > +        # flags, zone_src, zone_ofs_nbits, recirc_table,
> >          # pad, alg
> >          _fmt_str = '!HIHB3xH'
> >          # Followed by actions
> > @@ -795,7 +811,8 @@ def generate(ofp_name, ofpp_name):
> >          def __init__(self,
> >                       flags,
> >                       zone_src,
> > -                     zone_ofs_nbits,  # is zone_imm if zone_src == 0
> > +                     zone_start,
> > +                     zone_end,
> >                       recirc_table,
> >                       alg,
> >                       actions,
> > @@ -803,7 +820,8 @@ def generate(ofp_name, ofpp_name):
> >              super(NXActionCT, self).__init__()
> >              self.flags = flags
> >              self.zone_src = zone_src
> > -            self.zone_ofs_nbits = zone_ofs_nbits
> > +            self.zone_start = zone_start
> > +            self.zone_end = zone_end
> >              self.recirc_table = recirc_table
> >              self.alg = alg
> >              self.actions = actions
> > @@ -816,6 +834,8 @@ def generate(ofp_name, ofpp_name):
> >               recirc_table,
> >               alg,) = struct.unpack_from(
> >                  cls._fmt_str, buf, 0)
> > +            zone_start = zone_ofs_nbits >> 6
> > +            zone_end = (zone_ofs_nbits & 0x3f) + zone_start
> >              rest = buf[struct.calcsize(cls._fmt_str):]
> >              # actions
> >              actions = []
> > @@ -824,15 +844,17 @@ def generate(ofp_name, ofpp_name):
> >                  actions.append(action)
> >                  rest = rest[action.len:]
> >
> > -            return cls(flags, zone_src, zone_ofs_nbits, recirc_table,
> > +            return cls(flags, zone_src, zone_start, zone_end,
> > recirc_table,
> >                         alg, actions)
> >
> >          def serialize_body(self):
> > +            zone_ofs_nbits = ((self.zone_start << 6) +
> > +                              (self.zone_end - self.zone_start))
> >              data = bytearray()
> >              msg_pack_into(self._fmt_str, data, 0,
> >                            self.flags,
> >                            self.zone_src,
> > -                          self.zone_ofs_nbits,
> > +                          zone_ofs_nbits,
> >                            self.recirc_table,
> >                            self.alg)
> >              for a in self.actions:
> > diff --git
> > a/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct.packet.json
> > b/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct.packet.json
> > index 258da23..473b54f 100644
> > --- a/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct.packet.json
> > +++ b/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct.packet.json
> > @@ -21,7 +21,8 @@
> >                          "recirc_table": 4,
> >                          "subtype": 35,
> >                          "type": 65535,
> > -                        "zone_ofs_nbits": 0,
> > +                        "zone_start": 0,
> > +                        "zone_end": 0,
> >                          "zone_src": 0
> >                       }
> >                    }
> > diff --git
> > a/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_exec.packet.json
> > b/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_exec.packet.json
> > index 8327644..7cecad7 100644
> > ---
> > a/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_exec.packet.json
> > +++
> > b/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_exec.packet.json
> > @@ -35,7 +35,8 @@
> >                          "recirc_table": 255,
> >                          "subtype": 35,
> >                          "type": 65535,
> > -                        "zone_ofs_nbits": 0,
> > +                        "zone_start": 0,
> > +                        "zone_end": 0,
> >                          "zone_src": 0
> >                       }
> >                    }
> > diff --git
> > a/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat.packet.json
> > b/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat.packet.json
> > index 85aae12..b63c226 100644
> > ---
> > a/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat.packet.json
> > +++
> > b/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat.packet.json
> > @@ -37,7 +37,8 @@
> >                          "recirc_table": 255,
> >                          "subtype": 35,
> >                          "type": 65535,
> > -                        "zone_ofs_nbits": 0,
> > +                        "zone_start": 0,
> > +                        "zone_end": 0,
> >                          "zone_src": 0
> >                       }
> >                    }
> > diff --git
> > a/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat_v6.packet.json
> > b/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat_v6.packet.json
> > index 31f9437..e50d561 100644
> > ---
> > a/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat_v6.packet.json
> > +++
> > b/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-action_ct_nat_v6.packet.json
> > @@ -37,7 +37,8 @@
> >                          "recirc_table": 255,
> >                          "subtype": 35,
> >                          "type": 65535,
> > -                        "zone_ofs_nbits": 0,
> > +                        "zone_start": 0,
> > +                        "zone_end": 0,
> >                          "zone_src": 0
> >                       }
> >                    }
> > diff --git
> > a/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_load_nx_register.packet.json
> > b/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_load_nx_register.packet.json
> > index adf14ca..e57d11a 100644
> > ---
> > a/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_load_nx_register.packet.json
> > +++
> > b/ryu/tests/unit/ofproto/json/of13/ovs-ofctl-of13-match_load_nx_register.packet.json
> > @@ -16,8 +16,8 @@
> >                          "dst": "reg0",
> >                          "experimenter": 8992,
> >                          "len": 24,
> > -                        "nbits": 28,
> > -                        "ofs": 4,
> > +                        "end": 31,
> > +                        "start": 4,
> >                          "subtype": 7,
> >                          "type": 65535,
> >                          "value": 233495534
> > diff --git a/ryu/tests/unit/ofproto/test_parser_v10.py
> > b/ryu/tests/unit/ofproto/test_parser_v10.py
> > index c4dd474..5143e11 100644
> > --- a/ryu/tests/unit/ofproto/test_parser_v10.py
> > +++ b/ryu/tests/unit/ofproto/test_parser_v10.py
> > @@ -1421,6 +1421,8 @@ class TestNXActionRegLoad(unittest.TestCase):
> >      dst = {'buf': b'\x9f\x9f\x88\x26', 'val': 2678032422}
> >      value = {'buf': b'\x33\x51\xcd\x43\x25\x28\x18\x99',
> >               'val': 3697962457317775513}
> > +    start = 246
> > +    end = 270
> >
> >      buf = type_['buf'] \
> >          + len_['buf'] \
> > @@ -1430,7 +1432,8 @@ class TestNXActionRegLoad(unittest.TestCase):
> >          + dst['buf'] \
> >          + value['buf']
> >
> > -    c = NXActionRegLoad(ofs_nbits['val'],
> > +    c = NXActionRegLoad(start,
> > +                        end,
> >                          dst['val'],
> >                          value['val'])
> >
> > @@ -1445,13 +1448,15 @@ class TestNXActionRegLoad(unittest.TestCase):
> >          eq_(self.len_['val'], self.c.len)
> >          eq_(self.vendor['val'], self.c.vendor)
> >          eq_(self.subtype['val'], self.c.subtype)
> > -        eq_(self.ofs_nbits['val'], self.c.ofs_nbits)
> > +        eq_(self.start, self.c.start)
> > +        eq_(self.end, self.c.end)
> >          eq_(self.dst['val'], self.c.dst)
> >          eq_(self.value['val'], self.c.value)
> >
> >      def test_parser(self):
> >          res = self.c.parser(self.buf, 0)
> > -        eq_(self.ofs_nbits['val'], res.ofs_nbits)
> > +        eq_(self.start, self.c.start)
> > +        eq_(self.end, self.c.end)
> >          eq_(self.dst['val'], res.dst)
> >          eq_(self.value['val'], res.value)
> >
> > @@ -1547,6 +1552,8 @@ class TestNXActionMultipath(unittest.TestCase):
> >      zfill1 = b'\x00' * 2
> >      ofs_nbits = {'buf': b'\xa9\x9a', 'val': 43418}
> >      dst = {'buf': b'\xb9\x2f\x16\x64', 'val': 3106870884}
> > +    start = 678
> > +    end = 704
> >
> >      buf = type_['buf'] \
> >          + len_['buf'] \
> > @@ -1567,7 +1574,8 @@ class TestNXActionMultipath(unittest.TestCase):
> >                            algorithm['val'],
> >                            max_link['val'],
> >                            arg['val'],
> > -                          ofs_nbits['val'],
> > +                          start,
> > +                          end,
> >                            dst['val'])
> >
> >      def setUp(self):
> > @@ -1582,7 +1590,8 @@ class TestNXActionMultipath(unittest.TestCase):
> >          eq_(self.algorithm['val'], self.c.algorithm)
> >          eq_(self.max_link['val'], self.c.max_link)
> >          eq_(self.arg['val'], self.c.arg)
> > -        eq_(self.ofs_nbits['val'], self.c.ofs_nbits)
> > +        eq_(self.start, self.c.start)
> > +        eq_(self.end, self.c.end)
> >          eq_(self.dst['val'], self.c.dst)
> >
> >      def test_parser(self):
> > @@ -1593,7 +1602,8 @@ class TestNXActionMultipath(unittest.TestCase):
> >          eq_(self.algorithm['val'], res.algorithm)
> >          eq_(self.max_link['val'], res.max_link)
> >          eq_(self.arg['val'], res.arg)
> > -        eq_(self.ofs_nbits['val'], res.ofs_nbits)
> > +        eq_(self.start, res.start)
> > +        eq_(self.end, res.end)
> >          eq_(self.dst['val'], res.dst)
> >
> >      def test_serialize(self):
> > @@ -1634,12 +1644,14 @@ class TestNXActionBundle(unittest.TestCase):
> >      basis = {'buf': b'\xfd\x6f', 'val': 64879}
> >      slave_type = {'buf': b'\x7c\x51\x0f\xe0', 'val': 2085687264}
> >      n_slaves = {'buf': b'\x00\x02', 'val': 2}
> > -    ofs_nbits = {'buf': b'\xec\xf7', 'val': 60663}
> > -    dst = {'buf': b'\x50\x7c\x75\xfe', 'val': 1350333950}
> > +    ofs_nbits = {'buf': b'\x00\x00', 'val': 0}
> > +    dst = {'buf': b'\x00\x00\x00\x00', 'val': 0}
> >      zfill = b'\x00' * 4
> >
> >      slaves_buf = (b'\x00\x01', b'\x00\x02')
> >      slaves_val = (1, 2)
> > +    start = 0
> > +    end = 0
> >
> >      _len = len_['val'] + len(slaves_val) * 2
> >      _len += (_len % 8)
> > @@ -1664,7 +1676,8 @@ class TestNXActionBundle(unittest.TestCase):
> >                         basis['val'],
> >                         slave_type['val'],
> >                         n_slaves['val'],
> > -                       ofs_nbits['val'],
> > +                       start,
> > +                       end,
> >                         dst['val'],
> >                         slaves_val)
> >
> > @@ -1684,7 +1697,8 @@ class TestNXActionBundle(unittest.TestCase):
> >          eq_(self.basis['val'], self.c.basis)
> >          eq_(self.slave_type['val'], self.c.slave_type)
> >          eq_(self.n_slaves['val'], self.c.n_slaves)
> > -        eq_(self.ofs_nbits['val'], self.c.ofs_nbits)
> > +        eq_(self.start, self.c.start)
> > +        eq_(self.end, self.c.end)
> >          eq_(self.dst['val'], self.c.dst)
> >
> >          # slaves
> > @@ -1704,7 +1718,8 @@ class TestNXActionBundle(unittest.TestCase):
> >          eq_(self.basis['val'], res.basis)
> >          eq_(self.slave_type['val'], res.slave_type)
> >          eq_(self.n_slaves['val'], res.n_slaves)
> > -        eq_(self.ofs_nbits['val'], res.ofs_nbits)
> > +        eq_(self.start, res.start)
> > +        eq_(self.end, res.end)
> >          eq_(self.dst['val'], res.dst)
> >
> >          # slaves
> > @@ -1756,6 +1771,8 @@ class TestNXActionBundleLoad(unittest.TestCase):
> >      ofs_nbits = {'buf': b'\xd2\x9d', 'val': 53917}
> >      dst = {'buf': b'\x37\xfe\xb3\x60', 'val': 939438944}
> >      zfill = b'\x00' * 4
> > +    start = 842
> > +    end = 871
> >
> >      slaves_buf = (b'\x00\x01', b'\x00\x02')
> >      slaves_val = (1, 2)
> > @@ -1783,7 +1800,8 @@ class TestNXActionBundleLoad(unittest.TestCase):
> >                             basis['val'],
> >                             slave_type['val'],
> >                             n_slaves['val'],
> > -                           ofs_nbits['val'],
> > +                           start,
> > +                           end,
> >                             dst['val'],
> >                             slaves_val)
> >
> > @@ -1803,7 +1821,8 @@ class TestNXActionBundleLoad(unittest.TestCase):
> >          eq_(self.basis['val'], self.c.basis)
> >          eq_(self.slave_type['val'], self.c.slave_type)
> >          eq_(self.n_slaves['val'], self.c.n_slaves)
> > -        eq_(self.ofs_nbits['val'], self.c.ofs_nbits)
> > +        eq_(self.start, self.c.start)
> > +        eq_(self.end, self.c.end)
> >          eq_(self.dst['val'], self.c.dst)
> >
> >          # slaves
> > @@ -1823,7 +1842,8 @@ class TestNXActionBundleLoad(unittest.TestCase):
> >          eq_(self.basis['val'], res.basis)
> >          eq_(self.slave_type['val'], res.slave_type)
> >          eq_(self.n_slaves['val'], res.n_slaves)
> > -        eq_(self.ofs_nbits['val'], res.ofs_nbits)
> > +        eq_(self.start, res.start)
> > +        eq_(self.end, res.end)
> >          eq_(self.dst['val'], res.dst)
> >
> >          # slaves
> > @@ -1870,6 +1890,8 @@ class TestNXActionOutputReg(unittest.TestCase):
> >      src = {'buf': b'\x5e\x3a\x04\x26', 'val': 1580860454}
> >      max_len = {'buf': b'\x00\x08', 'val': ofproto.OFP_ACTION_OUTPUT_SIZE}
> >      zfill = b'\x00' * 6
> > +    start = 1017
> > +    end = 1073
> >
> >      buf = type_['buf'] \
> >          + len_['buf'] \
> > @@ -1880,7 +1902,8 @@ class TestNXActionOutputReg(unittest.TestCase):
> >          + max_len['buf'] \
> >          + zfill
> >
> > -    c = NXActionOutputReg(ofs_nbits['val'],
> > +    c = NXActionOutputReg(start,
> > +                          end,
> >                            src['val'],
> >                            max_len['val'])
> >
> > @@ -1895,7 +1918,8 @@ class TestNXActionOutputReg(unittest.TestCase):
> >          eq_(self.len_['val'], self.c.len)
> >          eq_(self.vendor['val'], self.c.vendor)
> >          eq_(self.subtype['val'], self.c.subtype)
> > -        eq_(self.ofs_nbits['val'], self.c.ofs_nbits)
> > +        eq_(self.start, self.c.start)
> > +        eq_(self.end, self.c.end)
> >          eq_(self.src['val'], self.c.src)
> >          eq_(self.max_len['val'], self.c.max_len)
> >
> > @@ -1906,7 +1930,8 @@ class TestNXActionOutputReg(unittest.TestCase):
> >          eq_(self.len_['val'], res.len)
> >          eq_(self.vendor['val'], res.vendor)
> >          eq_(self.subtype['val'], res.subtype)
> > -        eq_(self.ofs_nbits['val'], res.ofs_nbits)
> > +        eq_(self.start, self.c.start)
> > +        eq_(self.end, self.c.end)
> >          eq_(self.src['val'], res.src)
> >          eq_(self.max_len['val'], res.max_len)
> >
> > --
> > 1.9.1
> >
> >
> >
> > ------------------------------------------------------------------------------
> > What NetFlow Analyzer can do for you? Monitors network bandwidth and
> > traffic
> > patterns at an interface-level. Reveals which users, apps, and protocols
> > are
> > consuming the most bandwidth. Provides multi-vendor support for NetFlow,
> > J-Flow, sFlow and other flows. Make informed decisions using capacity
> > planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
> > _______________________________________________
> > Ryu-devel mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/ryu-devel
> >
> [1.2  <text/html; UTF-8 (base64)>]
> [2  <text/plain; us-ascii (7bit)>]
> ------------------------------------------------------------------------------
> Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
> Francisco, CA to explore cutting-edge tech and listen to tech luminaries
> present their vision of the future. This family event has something for
> everyone, including kids. Get more information and register today.
> http://sdm.link/attshape
> [3  <text/plain; us-ascii (7bit)>]
> _______________________________________________
> Ryu-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ryu-devel

------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
http://sdm.link/attshape
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to