From 2c4d247a2f6a2e074b8a7e53f7c35f4cab63d434 Mon Sep 17 00:00:00 2001 From: Eishun Kondoh Date: Tue, 21 Aug 2018 19:16:43 +0900 Subject: [PATCH] Add send_meter_mod_{add,modify,delete} helpers --- bin/enum_gen | Bin 1459623 -> 1460249 bytes lib/openflow/meter_mod.ex | 9 +++++++++ lib/tres/message_helper.ex | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/bin/enum_gen b/bin/enum_gen index f478e08c14ea85e19f6ce2b7d64618bc5a69a204..bf594917a60fbde2273419b8eb90aaceaa19a407 100755 GIT binary patch delta 20993 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 delta 20170 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 p>C4?A0lX6=`t5)ys9mWo7U0dw21>) do command = Openflow.Enums.to_atom(command_int, :meter_mod_command) flags = Openflow.Enums.int_to_flags(flags_int, :meter_flags) diff --git a/lib/tres/message_helper.ex b/lib/tres/message_helper.ex index dcb1a02..70d911b 100644 --- a/lib/tres/message_helper.ex +++ b/lib/tres/message_helper.ex @@ -115,6 +115,43 @@ defmodule Tres.MessageHelper do send_message(role_request, datapath_id, Keyword.get(options, :blocking, false)) end + + defp send_meter_mod_add(datapath_id, options \\ []) do + meter_mod = + Openflow.MeterMod.new( + xid: options[:xid] || 0, + command: :add, + flags: options[:flags] || [], + meter_id: options[:meter_id] || 0, + bands: options[:bands] || [] + ) + + send_message(meter_mod, datapath_id, options[:blocking] || false) + end + + defp send_meter_mod_modify(datapath_id, options \\ []) do + meter_mod = + Openflow.MeterMod.new( + xid: options[:xid] || 0, + command: :modify, + flags: options[:flags] || [], + meter_id: options[:meter_id] || 0, + bands: options[:bands] || [] + ) + + send_message(meter_mod, datapath_id, options[:blocking] || false) + end + + defp send_meter_mod_delete(datapath_id, options \\ []) do + meter_mod = + Openflow.MeterMod.new( + xid: options[:xid] || 0, + command: :delete, + meter_id: options[:meter_id] || 0, + ) + + send_message(meter_mod, datapath_id, options[:blocking] || false) + end end end end