diff options
author | Simon Horman <horms@verge.net.au> | 2014-02-04 13:27:54 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2014-02-04 18:41:32 +0900 |
commit | 0f9bdca0fa258f06b1e73a431b9d894e2872dff9 (patch) | |
tree | ceda56f9de8f3c489871a0c65b75a48d7b4b0213 | |
parent | b4895e12178974025c8291e80e4b65ba2650a3e7 (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.py | 48 |
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__() |