summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSimon Horman <horms@verge.net.au>2014-02-04 13:27:54 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2014-02-04 18:41:32 +0900
commit0f9bdca0fa258f06b1e73a431b9d894e2872dff9 (patch)
treeceda56f9de8f3c489871a0c65b75a48d7b4b0213
parentb4895e12178974025c8291e80e4b65ba2650a3e7 (diff)
of14: Add OFPMeterBandDscpRemark and OFPMeterBandExperimenter
These will be used my meter mod message support which is added by a subsequent patch. Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/ofproto/ofproto_v1_4_parser.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/ryu/ofproto/ofproto_v1_4_parser.py b/ryu/ofproto/ofproto_v1_4_parser.py
index b6560ce0..e6174463 100644
--- a/ryu/ofproto/ofproto_v1_4_parser.py
+++ b/ryu/ofproto/ofproto_v1_4_parser.py
@@ -2653,6 +2653,54 @@ class OFPMeterBandDrop(OFPMeterBandHeader):
return cls(rate, burst_size)
+@OFPMeterBandHeader.register_meter_band_type(
+ ofproto.OFPMBT_DSCP_REMARK,
+ ofproto.OFP_METER_BAND_DSCP_REMARK_SIZE)
+class OFPMeterBandDscpRemark(OFPMeterBandHeader):
+ def __init__(self, rate, burst_size, prec_level, type_=None, len_=None):
+ super(OFPMeterBandDscpRemark, self).__init__()
+ self.rate = rate
+ self.burst_size = burst_size
+ self.prec_level = prec_level
+
+ def serialize(self, buf, offset):
+ msg_pack_into(ofproto.OFP_METER_BAND_DSCP_REMARK_PACK_STR, buf,
+ offset, self.type, self.len, self.rate,
+ self.burst_size, self.prec_level)
+
+ @classmethod
+ def parser(cls, buf, offset):
+ type_, len_, rate, burst_size, prec_level = struct.unpack_from(
+ ofproto.OFP_METER_BAND_DSCP_REMARK_PACK_STR, buf, offset)
+ assert cls.cls_meter_band_type == type_
+ assert cls.cls_meter_band_len == len_
+ return cls(rate, burst_size, prec_level)
+
+
+@OFPMeterBandHeader.register_meter_band_type(
+ ofproto.OFPMBT_EXPERIMENTER,
+ ofproto.OFP_METER_BAND_EXPERIMENTER_SIZE)
+class OFPMeterBandExperimenter(OFPMeterBandHeader):
+ def __init__(self, rate, burst_size, experimenter, type_=None, len_=None):
+ super(OFPMeterBandExperimenter, self).__init__()
+ self.rate = rate
+ self.burst_size = burst_size
+ self.experimenter = experimenter
+
+ def serialize(self, buf, offset):
+ msg_pack_into(ofproto.OFP_METER_BAND_EXPERIMENTER_PACK_STR, buf,
+ offset, self.type, self.len, self.rate,
+ self.burst_size, self.experimenter)
+
+ @classmethod
+ def parser(cls, buf, offset):
+ type_, len_, rate, burst_size, experimenter = struct.unpack_from(
+ ofproto.OFP_METER_BAND_EXPERIMENTER_PACK_STR, buf, offset)
+ assert cls.cls_meter_band_type == type_
+ assert cls.cls_meter_band_len == len_
+ return cls(rate, burst_size, experimenter)
+
+
class OFPMeterConfigStats(StringifyMixin):
def __init__(self, flags=None, meter_id=None, bands=None, length=None):
super(OFPMeterConfigStats, self).__init__()