Sorry for the malformed patch, please see attached patch
Eran
On Thu, Jun 25, 2015 at 6:18 AM, FUJITA Tomonori <
[email protected]> wrote:
> On Thu, 25 Jun 2015 14:55:15 +0300
> Eran Gampel <[email protected]> wrote:
>
> >>From d8379f6b146dbf98a12ffbc9dc95ba595f074509 Mon Sep 17 00:00:00 2001
> > From: Eran Gampel <[email protected]>
> > Date: Thu, 25 Jun 2015 14:25:45 +0300
> > Subject: [PATCH] Add support for the nicira extension mark
> (NXM_NX_PKT_MARK)
> >
> > Add support for match and set for the pkt_mark nicira ext
> (NXM_NX_PKT_MARK)
> > This extension is important as it is the only mark that stay persistence
> > across
> > virtual switches
> > Signed-off-by: Eran Gampel [email protected]
>
> The patch is malformed. Can you resent it as an attachment?
>
> Here are some comments.
>
> > ---
> > ryu/app/ofctl_rest.py | 1 -
> > ryu/base/app_manager.py | 1 -
> > ryu/ofproto/nx_match.py | 24 ++++++++++++++++++++++++
> > ryu/ofproto/ofproto_v1_0.py | 3 +++
> > ryu/ofproto/ofproto_v1_3.py | 1 +
> > ryu/ofproto/ofproto_v1_4.py | 1 +
> > ryu/ofproto/ofproto_v1_5.py | 1 +
> > 7 files changed, 30 insertions(+), 2 deletions(-)
> >
> > diff --git a/ryu/app/ofctl_rest.py b/ryu/app/ofctl_rest.py
> > index e134cb1..a79788d 100644
> > --- a/ryu/app/ofctl_rest.py
> > +++ b/ryu/app/ofctl_rest.py
> > @@ -32,7 +32,6 @@ from ryu.lib import ofctl_v1_2
> > from ryu.lib import ofctl_v1_3
> > from ryu.app.wsgi import ControllerBase, WSGIApplication
> >
> > -
>
> Why?
>
> > LOG = logging.getLogger('ryu.app.ofctl_rest')
> >
> > # supported ofctl versions in this restful app
> > diff --git a/ryu/base/app_manager.py b/ryu/base/app_manager.py
> > index b81e59c..d22a191 100644
> > --- a/ryu/base/app_manager.py
> > +++ b/ryu/base/app_manager.py
> > @@ -281,7 +281,6 @@ class RyuApp(object):
> > """
> > Send the specified event to the RyuApp instance specified by
> name.
> > """
> > -
>
> Why?
>
> > if name in SERVICE_BRICKS:
> > if isinstance(ev, EventRequestBase):
> > ev.src = self.name
> > diff --git a/ryu/ofproto/nx_match.py b/ryu/ofproto/nx_match.py
> > index 47fc8f3..c2af35b 100644
> > --- a/ryu/ofproto/nx_match.py
> > +++ b/ryu/ofproto/nx_match.py
> > @@ -90,6 +90,7 @@ class Flow(object):
> > self.nw_frag = 0
> > self.regs = [0] * FLOW_N_REGS
> > self.ipv6_label = 0
> > + self.pkt_mark = 0
> > From d8379f6b146dbf98a12ffbc9dc95ba595f074509 Mon Sep 17 00:00:00 2001
> > From: Eran Gampel <[email protected]>
> > Date: Thu, 25 Jun 2015 14:25:45 +0300
> > Subject: [PATCH] Add support for the nicira extension mark
> (NXM_NX_PKT_MARK)
> >
> > Add support for match and set for the pkt_mark nicira ext
> (NXM_NX_PKT_MARK)
> > This extension is important as it is the only mark that stay persistence
> > across
> > virtual switches
> > Signed-off-by: Eran Gampel [email protected]
> >
> > ---
> > ryu/app/ofctl_rest.py | 1 -
> > ryu/base/app_manager.py | 1 -
> > ryu/ofproto/nx_match.py | 24 ++++++++++++++++++++++++
> > ryu/ofproto/ofproto_v1_0.py | 3 +++
> > ryu/ofproto/ofproto_v1_3.py | 1 +
> > ryu/ofproto/ofproto_v1_4.py | 1 +
> > ryu/ofproto/ofproto_v1_5.py | 1 +
> > 7 files changed, 30 insertions(+), 2 deletions(-)
> >
> > diff --git a/ryu/app/ofctl_rest.py b/ryu/app/ofctl_rest.py
> > index e134cb1..a79788d 100644
> > --- a/ryu/app/ofctl_rest.py
> > +++ b/ryu/app/ofctl_rest.py
> > @@ -32,7 +32,6 @@ from ryu.lib import ofctl_v1_2
> > from ryu.lib import ofctl_v1_3
> > from ryu.app.wsgi import ControllerBase, WSGIApplication
> >
> > -
> > LOG = logging.getLogger('ryu.app.ofctl_rest')
> >
> > # supported ofctl versions in this restful app
> > diff --git a/ryu/base/app_manager.py b/ryu/base/app_manager.py
> > index b81e59c..d22a191 100644
> > --- a/ryu/base/app_manager.py
> > +++ b/ryu/base/app_manager.py
> > @@ -281,7 +281,6 @@ class RyuApp(object):
> > """
> > Send the specified event to the RyuApp instance specified by
> name.
> > """
> > -
> > if name in SERVICE_BRICKS:
> > if isinstance(ev, EventRequestBase):
> > ev.src = self.name
> > diff --git a/ryu/ofproto/nx_match.py b/ryu/ofproto/nx_match.py
> > index 47fc8f3..c2af35b 100644
> > --- a/ryu/ofproto/nx_match.py
> > +++ b/ryu/ofproto/nx_match.py
> > @@ -90,6 +90,7 @@ class Flow(object):
> > self.nw_frag = 0
> > self.regs = [0] * FLOW_N_REGS
> > self.ipv6_label = 0
> > + self.pkt_mark = 0
> >
> >
> > class FlowWildcards(object):
> > @@ -111,6 +112,7 @@ class FlowWildcards(object):
> > self.regs_bits = 0
> > self.regs_mask = [0] * FLOW_N_REGS
> > self.wildcards = ofproto_v1_0.OFPFW_ALL
> > + self.pkt_mark_mask = 0
> >
> >
> > class ClsRule(object):
> > @@ -291,6 +293,10 @@ class ClsRule(object):
> > self.flow.regs[reg_idx] = value
> > self.wc.regs_bits |= (1 << reg_idx)
> >
> > + def set_pkt_mark_masked(self, pkt_mark, mask):
> > + self.flow.pkt_mark = pkt_mark
> > + self.wc.pkt_mark_mask = mask
> > +
> > def flow_format(self):
> > # Tunnel ID is only supported by NXM
> > if self.wc.tun_id_mask != 0:
> > @@ -914,6 +920,17 @@ class MFRegister(MFField):
> > return self._put(buf, offset, rule.flow.regs[i])
> >
> >
> > +@_register_make
> > +@_set_nxm_headers([ofproto_v1_0.NXM_NX_PKT_MARK,
> > ofproto_v1_0.NXM_NX_PKT_MARK_W])
> > +class MFPktMark(MFField):
> > + @classmethod
> > + def make(cls, header):
> > + return cls(header, MF_PACK_STRING_BE32)
> > +
> > + def put(self, buf, offset, rule):
> > + return self.putm(buf, offset, rule.flow.pkt_mark,
> > rule.wc.pkt_mark_mask)
> > +
> > +
> > def serialize_nxm_match(rule, buf, offset):
> > old_offset = offset
> >
> > @@ -1071,6 +1088,13 @@ def serialize_nxm_match(rule, buf, offset):
> > header = ofproto_v1_0.NXM_NX_IP_FRAG_W
> > offset += nxm_put(buf, offset, header, rule)
> >
> > + if rule.flow.pkt_mark != 0:
> > + if rule.wc.pkt_mark_mask == UINT32_MAX:
> > + header = ofproto_v1_0.NXM_NX_PKT_MARK
> > + else:
> > + header = ofproto_v1_0.NXM_NX_PKT_MARK_W
> > + offset += nxm_put(buf, offset, header, rule)
> > +
> > # Tunnel Id
> > if rule.wc.tun_id_mask != 0:
> > if rule.wc.tun_id_mask == UINT64_MAX:
> > diff --git a/ryu/ofproto/ofproto_v1_0.py b/ryu/ofproto/ofproto_v1_0.py
> > index 8da9970..2b0e052 100644
> > --- a/ryu/ofproto/ofproto_v1_0.py
> > +++ b/ryu/ofproto/ofproto_v1_0.py
> > @@ -582,6 +582,9 @@ NXM_NX_IP_ECN = nxm_header(0x0001, 28, 1)
> >
> > NXM_NX_IP_TTL = nxm_header(0x0001, 29, 1)
> >
> > +NXM_NX_PKT_MARK = nxm_header(0x0001, 33, 4)
> > +NXM_NX_PKT_MARK_W = nxm_header_w(0x0001, 33, 4)
> > +
> >
> > def nxm_nx_reg(idx):
> > return nxm_header(0x0001, idx, 4)
> > diff --git a/ryu/ofproto/ofproto_v1_3.py b/ryu/ofproto/ofproto_v1_3.py
> > index a06c305..80916ec 100644
> > --- a/ryu/ofproto/ofproto_v1_3.py
> > +++ b/ryu/ofproto/ofproto_v1_3.py
> > @@ -1192,6 +1192,7 @@ oxm_types = [
> > oxm_fields.ONFExperimenter('actset_output', 43, type_desc.Int4),
> > oxm_fields.NiciraExtended1('tun_ipv4_src', 31, type_desc.IPv4Addr),
> > oxm_fields.NiciraExtended1('tun_ipv4_dst', 32, type_desc.IPv4Addr),
> > + oxm_fields.NiciraExtended1('pkt_mark', 33, type_desc.Int4),
> > oxm_fields.NiciraExtended1('conj_id', 37, type_desc.Int4),
> >
> > # The following definition is merely for testing 64-bit experimenter
> > OXMs.
> > diff --git a/ryu/ofproto/ofproto_v1_4.py b/ryu/ofproto/ofproto_v1_4.py
> > index 7fcdf51..534c6b2 100644
> > --- a/ryu/ofproto/ofproto_v1_4.py
> > +++ b/ryu/ofproto/ofproto_v1_4.py
> > @@ -391,6 +391,7 @@ oxm_types = [
> > oxm_fields.OpenFlowBasic('pbb_uca', 41, type_desc.Int1),
> > oxm_fields.NiciraExtended1('tun_ipv4_src', 31, type_desc.IPv4Addr),
> > oxm_fields.NiciraExtended1('tun_ipv4_dst', 32, type_desc.IPv4Addr),
> > + oxm_fields.NiciraExtended1('pkt_mark', 33, type_desc.Int4),
> > ]
> >
> > oxm_fields.generate(__name__)
> > diff --git a/ryu/ofproto/ofproto_v1_5.py b/ryu/ofproto/ofproto_v1_5.py
> > index 1ec4b97..753b951 100644
> > --- a/ryu/ofproto/ofproto_v1_5.py
> > +++ b/ryu/ofproto/ofproto_v1_5.py
> > @@ -434,6 +434,7 @@ oxm_types = [
> > oxm_fields.OpenFlowBasic('packet_type', 44, type_desc.Int4),
> > oxm_fields.NiciraExtended1('tun_ipv4_src', 31, type_desc.IPv4Addr),
> > oxm_fields.NiciraExtended1('tun_ipv4_dst', 32, type_desc.IPv4Addr),
> > + oxm_fields.NiciraExtended1('pkt_mark', 33, type_desc.Int4),
> > oxm_fields.NiciraExtended1('conj_id', 37, type_desc.Int4),
> > ]
> >
> > --
> > 1.9.1
> >
> >
> > class FlowWildcards(object):
> > @@ -111,6 +112,7 @@ class FlowWildcards(object):
> > self.regs_bits = 0
> > self.regs_mask = [0] * FLOW_N_REGS
> > self.wildcards = ofproto_v1_0.OFPFW_ALL
> > + self.pkt_mark_mask = 0
> >
> >
> > class ClsRule(object):
> > @@ -291,6 +293,10 @@ class ClsRule(object):
> > self.flow.regs[reg_idx] = value
> > self.wc.regs_bits |= (1 << reg_idx)
> >
> > + def set_pkt_mark_masked(self, pkt_mark, mask):
> > + self.flow.pkt_mark = pkt_mark
> > + self.wc.pkt_mark_mask = mask
> > +
> > def flow_format(self):
> > # Tunnel ID is only supported by NXM
> > if self.wc.tun_id_mask != 0:
> > @@ -914,6 +920,17 @@ class MFRegister(MFField):
> > return self._put(buf, offset, rule.flow.regs[i])
> >
> >
> > +@_register_make
> > +@_set_nxm_headers([ofproto_v1_0.NXM_NX_PKT_MARK,
> > ofproto_v1_0.NXM_NX_PKT_MARK_W])
> > +class MFPktMark(MFField):
> > + @classmethod
> > + def make(cls, header):
> > + return cls(header, MF_PACK_STRING_BE32)
> > +
> > + def put(self, buf, offset, rule):
> > + return self.putm(buf, offset, rule.flow.pkt_mark,
> > rule.wc.pkt_mark_mask)
> > +
> > +
> > def serialize_nxm_match(rule, buf, offset):
> > old_offset = offset
> >
> > @@ -1071,6 +1088,13 @@ def serialize_nxm_match(rule, buf, offset):
> > header = ofproto_v1_0.NXM_NX_IP_FRAG_W
> > offset += nxm_put(buf, offset, header, rule)
> >
> > + if rule.flow.pkt_mark != 0:
> > + if rule.wc.pkt_mark_mask == UINT32_MAX:
> > + header = ofproto_v1_0.NXM_NX_PKT_MARK
> > + else:
> > + header = ofproto_v1_0.NXM_NX_PKT_MARK_W
> > + offset += nxm_put(buf, offset, header, rule)
> > +
> > # Tunnel Id
> > if rule.wc.tun_id_mask != 0:
> > if rule.wc.tun_id_mask == UINT64_MAX:
> > diff --git a/ryu/ofproto/ofproto_v1_0.py b/ryu/ofproto/ofproto_v1_0.py
> > index 8da9970..2b0e052 100644
> > --- a/ryu/ofproto/ofproto_v1_0.py
> > +++ b/ryu/ofproto/ofproto_v1_0.py
> > @@ -582,6 +582,9 @@ NXM_NX_IP_ECN = nxm_header(0x0001, 28, 1)
> >
> > NXM_NX_IP_TTL = nxm_header(0x0001, 29, 1)
> >
> > +NXM_NX_PKT_MARK = nxm_header(0x0001, 33, 4)
> > +NXM_NX_PKT_MARK_W = nxm_header_w(0x0001, 33, 4)
> > +
> >
> > def nxm_nx_reg(idx):
> > return nxm_header(0x0001, idx, 4)
> > diff --git a/ryu/ofproto/ofproto_v1_3.py b/ryu/ofproto/ofproto_v1_3.py
> > index a06c305..80916ec 100644
> > --- a/ryu/ofproto/ofproto_v1_3.py
> > +++ b/ryu/ofproto/ofproto_v1_3.py
> > @@ -1192,6 +1192,7 @@ oxm_types = [
> > oxm_fields.ONFExperimenter('actset_output', 43, type_desc.Int4),
> > oxm_fields.NiciraExtended1('tun_ipv4_src', 31, type_desc.IPv4Addr),
> > oxm_fields.NiciraExtended1('tun_ipv4_dst', 32, type_desc.IPv4Addr),
> > + oxm_fields.NiciraExtended1('pkt_mark', 33, type_desc.Int4),
> > oxm_fields.NiciraExtended1('conj_id', 37, type_desc.Int4),
> >
> > # The following definition is merely for testing 64-bit experimenter
> > OXMs.
> > diff --git a/ryu/ofproto/ofproto_v1_4.py b/ryu/ofproto/ofproto_v1_4.py
> > index 7fcdf51..534c6b2 100644
> > --- a/ryu/ofproto/ofproto_v1_4.py
> > +++ b/ryu/ofproto/ofproto_v1_4.py
> > @@ -391,6 +391,7 @@ oxm_types = [
> > oxm_fields.OpenFlowBasic('pbb_uca', 41, type_desc.Int1),
> > oxm_fields.NiciraExtended1('tun_ipv4_src', 31, type_desc.IPv4Addr),
> > oxm_fields.NiciraExtended1('tun_ipv4_dst', 32, type_desc.IPv4Addr),
> > + oxm_fields.NiciraExtended1('pkt_mark', 33, type_desc.Int4),
> > ]
> >
> > oxm_fields.generate(__name__)
> > diff --git a/ryu/ofproto/ofproto_v1_5.py b/ryu/ofproto/ofproto_v1_5.py
> > index 1ec4b97..753b951 100644
> > --- a/ryu/ofproto/ofproto_v1_5.py
> > +++ b/ryu/ofproto/ofproto_v1_5.py
> > @@ -434,6 +434,7 @@ oxm_types = [
> > oxm_fields.OpenFlowBasic('packet_type', 44, type_desc.Int4),
> > oxm_fields.NiciraExtended1('tun_ipv4_src', 31, type_desc.IPv4Addr),
> > oxm_fields.NiciraExtended1('tun_ipv4_dst', 32, type_desc.IPv4Addr),
> > + oxm_fields.NiciraExtended1('pkt_mark', 33, type_desc.Int4),
> > oxm_fields.NiciraExtended1('conj_id', 37, type_desc.Int4),
> > ]
> >
> > --
> > 1.9.1
>
From 0874fc7fe2d06cbac593613b8b43afc9049d1ce3 Mon Sep 17 00:00:00 2001
From: Eran <[email protected]>
Date: Fri, 26 Jun 2015 01:08:03 -0700
Subject: [PATCH] Add support for pkt_mark nicira ext (NXM_NX_PKT_MARK)
Add support for pkt_mark match and set
Signed-off-by: Eran Gampel <[email protected]>
---
ryu/ofproto/nx_match.py | 24 ++++++++++++++++++++++++
ryu/ofproto/ofproto_v1_0.py | 3 +++
ryu/ofproto/ofproto_v1_3.py | 1 +
ryu/ofproto/ofproto_v1_4.py | 1 +
ryu/ofproto/ofproto_v1_5.py | 1 +
5 files changed, 30 insertions(+)
diff --git a/ryu/ofproto/nx_match.py b/ryu/ofproto/nx_match.py
index 47fc8f3..c2af35b 100644
--- a/ryu/ofproto/nx_match.py
+++ b/ryu/ofproto/nx_match.py
@@ -90,6 +90,7 @@ class Flow(object):
self.nw_frag = 0
self.regs = [0] * FLOW_N_REGS
self.ipv6_label = 0
+ self.pkt_mark = 0
class FlowWildcards(object):
@@ -111,6 +112,7 @@ class FlowWildcards(object):
self.regs_bits = 0
self.regs_mask = [0] * FLOW_N_REGS
self.wildcards = ofproto_v1_0.OFPFW_ALL
+ self.pkt_mark_mask = 0
class ClsRule(object):
@@ -291,6 +293,10 @@ class ClsRule(object):
self.flow.regs[reg_idx] = value
self.wc.regs_bits |= (1 << reg_idx)
+ def set_pkt_mark_masked(self, pkt_mark, mask):
+ self.flow.pkt_mark = pkt_mark
+ self.wc.pkt_mark_mask = mask
+
def flow_format(self):
# Tunnel ID is only supported by NXM
if self.wc.tun_id_mask != 0:
@@ -914,6 +920,17 @@ class MFRegister(MFField):
return self._put(buf, offset, rule.flow.regs[i])
+@_register_make
+@_set_nxm_headers([ofproto_v1_0.NXM_NX_PKT_MARK, ofproto_v1_0.NXM_NX_PKT_MARK_W])
+class MFPktMark(MFField):
+ @classmethod
+ def make(cls, header):
+ return cls(header, MF_PACK_STRING_BE32)
+
+ def put(self, buf, offset, rule):
+ return self.putm(buf, offset, rule.flow.pkt_mark, rule.wc.pkt_mark_mask)
+
+
def serialize_nxm_match(rule, buf, offset):
old_offset = offset
@@ -1071,6 +1088,13 @@ def serialize_nxm_match(rule, buf, offset):
header = ofproto_v1_0.NXM_NX_IP_FRAG_W
offset += nxm_put(buf, offset, header, rule)
+ if rule.flow.pkt_mark != 0:
+ if rule.wc.pkt_mark_mask == UINT32_MAX:
+ header = ofproto_v1_0.NXM_NX_PKT_MARK
+ else:
+ header = ofproto_v1_0.NXM_NX_PKT_MARK_W
+ offset += nxm_put(buf, offset, header, rule)
+
# Tunnel Id
if rule.wc.tun_id_mask != 0:
if rule.wc.tun_id_mask == UINT64_MAX:
diff --git a/ryu/ofproto/ofproto_v1_0.py b/ryu/ofproto/ofproto_v1_0.py
index 8da9970..2b0e052 100644
--- a/ryu/ofproto/ofproto_v1_0.py
+++ b/ryu/ofproto/ofproto_v1_0.py
@@ -582,6 +582,9 @@ NXM_NX_IP_ECN = nxm_header(0x0001, 28, 1)
NXM_NX_IP_TTL = nxm_header(0x0001, 29, 1)
+NXM_NX_PKT_MARK = nxm_header(0x0001, 33, 4)
+NXM_NX_PKT_MARK_W = nxm_header_w(0x0001, 33, 4)
+
def nxm_nx_reg(idx):
return nxm_header(0x0001, idx, 4)
diff --git a/ryu/ofproto/ofproto_v1_3.py b/ryu/ofproto/ofproto_v1_3.py
index a06c305..80916ec 100644
--- a/ryu/ofproto/ofproto_v1_3.py
+++ b/ryu/ofproto/ofproto_v1_3.py
@@ -1192,6 +1192,7 @@ oxm_types = [
oxm_fields.ONFExperimenter('actset_output', 43, type_desc.Int4),
oxm_fields.NiciraExtended1('tun_ipv4_src', 31, type_desc.IPv4Addr),
oxm_fields.NiciraExtended1('tun_ipv4_dst', 32, type_desc.IPv4Addr),
+ oxm_fields.NiciraExtended1('pkt_mark', 33, type_desc.Int4),
oxm_fields.NiciraExtended1('conj_id', 37, type_desc.Int4),
# The following definition is merely for testing 64-bit experimenter OXMs.
diff --git a/ryu/ofproto/ofproto_v1_4.py b/ryu/ofproto/ofproto_v1_4.py
index 7fcdf51..534c6b2 100644
--- a/ryu/ofproto/ofproto_v1_4.py
+++ b/ryu/ofproto/ofproto_v1_4.py
@@ -391,6 +391,7 @@ oxm_types = [
oxm_fields.OpenFlowBasic('pbb_uca', 41, type_desc.Int1),
oxm_fields.NiciraExtended1('tun_ipv4_src', 31, type_desc.IPv4Addr),
oxm_fields.NiciraExtended1('tun_ipv4_dst', 32, type_desc.IPv4Addr),
+ oxm_fields.NiciraExtended1('pkt_mark', 33, type_desc.Int4),
]
oxm_fields.generate(__name__)
diff --git a/ryu/ofproto/ofproto_v1_5.py b/ryu/ofproto/ofproto_v1_5.py
index 1ec4b97..753b951 100644
--- a/ryu/ofproto/ofproto_v1_5.py
+++ b/ryu/ofproto/ofproto_v1_5.py
@@ -434,6 +434,7 @@ oxm_types = [
oxm_fields.OpenFlowBasic('packet_type', 44, type_desc.Int4),
oxm_fields.NiciraExtended1('tun_ipv4_src', 31, type_desc.IPv4Addr),
oxm_fields.NiciraExtended1('tun_ipv4_dst', 32, type_desc.IPv4Addr),
+ oxm_fields.NiciraExtended1('pkt_mark', 33, type_desc.Int4),
oxm_fields.NiciraExtended1('conj_id', 37, type_desc.Int4),
]
--
1.9.1
------------------------------------------------------------------------------
Monitor 25 network devices or servers for free with OpManager!
OpManager is web-based network management software that monitors
network devices and physical & virtual servers, alerts via email & sms
for fault. Monitor 25 devices for free with no restriction. Download now
http://ad.doubleclick.net/ddm/clk/292181274;119417398;o
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel