On Fri, Jul 8, 2016 at 10:41 AM, Shinpei Muraoka <[email protected]>
wrote:

> Hi Yamamoto-San
>
> > i thought we aimed to align with on-wire fields rather than ovs-ofctl
> etc.
> > was the policy changed?
>
> If we aimed to align with on-wire fields,
> Ryu users needs to understand exactly the parameters content.
> It is very difficult.
> For the purpose of user-friendly, I adjusted the parameters of command.
> What do you think?
>

i don't feel start/end is any easier to understand than ofs/nbits.  but
probably it's a matter of taste.
i guess consistency (ie. be similar to on-wire) is more important here.

you can add start/end as optional arguments and if specified convert them
to ofs/nbits.
in that way you can keep compatibility.  i'm afraid that we need to do so
anyway
if we want to keep compatibilty with both of ryu 4.4 and older releases.


>
> Thanks,
>
> On 2016年07月07日 15:51, Takashi YAMAMOTO wrote:
>
>> 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?
>>
>> On Mon, Jun 6, 2016 at 9:48 AM, Shinpei Muraoka
>> <[email protected] <mailto:[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]
>>     <mailto:[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
>>     <tel: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
>>     <tel: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
>>     <tel: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] <mailto:
>> [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