Hi Yamamoto-San

 > 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.

Argument of the function, which was fixed in this patch restore to the 
way to specify the ofs/nbits.
I described in the document for the way to specify the ofs/nbits.

Thanks,

On 2016年07月08日 12:11, Takashi YAMAMOTO wrote:
>
>
> On Fri, Jul 8, 2016 at 10:41 AM, Shinpei Muraoka
> <[email protected] <mailto:[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]>
>         <mailto:[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]>
>              <mailto:[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>
>              <tel: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>
>              <tel: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>
>              <tel: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]>
>         <mailto:[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
>

------------------------------------------------------------------------------
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