diff --git a/bin/enum_gen b/bin/enum_gen index f478e08..bf59491 100755 Binary files a/bin/enum_gen and b/bin/enum_gen differ diff --git a/lib/openflow/meter_mod.ex b/lib/openflow/meter_mod.ex index 05e47b3..d361e6e 100644 --- a/lib/openflow/meter_mod.ex +++ b/lib/openflow/meter_mod.ex @@ -14,6 +14,15 @@ defmodule Openflow.MeterMod do def ofp_type, do: 29 + def new(options \\ []) do + %MeterMod{ + command: options[:command] || :add, + flags: options[:flags] || [], + meter_id: options[:meter_id] || 0, + bands: options[:bands] || [] + } + end + def read(<>) 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