diff --git a/ryu/app/ofctl_rest.py b/ryu/app/ofctl_rest.py index 907bed58..788714d3 100644 --- a/ryu/app/ofctl_rest.py +++ b/ryu/app/ofctl_rest.py @@ -77,6 +77,8 @@ LOG = logging.getLogger('ryu.app.ofctl_rest') # delete a meter entry # POST /stats/meterentry/delete +# TODO: support OFPMeterConfigStats + class StatsController(ControllerBase): def __init__(self, req, link, data, **config): @@ -339,3 +341,11 @@ class RestStatsApi(app_manager.RyuApp): @set_ev_cls(ofp_event.EventOFPPortStatsReply, MAIN_DISPATCHER) def port_stats_reply_handler(self, ev): self.stats_reply_handler(ev) + + @set_ev_cls(ofp_event.EventOFPMeterStatsReply, MAIN_DISPATCHER) + def meter_stats_reply_handler(self, ev): + self.stats_reply_handler(ev) + + @set_ev_cls(ofp_event.EventOFPMeterFeaturesStatsReply, MAIN_DISPATCHER) + def meter_features_stats_reply_handler(self, ev): + self.stats_reply_handler(ev) diff --git a/ryu/lib/ofctl_v1_3.py b/ryu/lib/ofctl_v1_3.py index 78225696..37f67d08 100644 --- a/ryu/lib/ofctl_v1_3.py +++ b/ryu/lib/ofctl_v1_3.py @@ -470,10 +470,10 @@ def get_meter_features(dp, waiters): features = [] for msg in msgs: for feature in msg.body: - f = {'max_meter': msg.body.max_meter, - 'band_type': msg.body.band_type, - 'max_bands': msg.body.max_bands, - 'max_color': msg.body.max_color} + f = {'max_meter': feature.max_meter, + 'band_types': feature.band_types, + 'max_band': feature.max_band, + 'max_color': feature.max_color} features.append(f) features = {str(dp.id): features} return features