tres/lib/openflow/actions/set_queue.ex
2019-03-28 18:17:01 +09:00

39 lines
715 B
Elixir

defmodule Openflow.Action.SetQueue do
@moduledoc """
Set queue id when outputting to a port
"""
defstruct(id: 0)
alias __MODULE__
@type t :: %SetQueue{id: 0..0xFFFFFFFF}
@spec ofpat() :: 21
def ofpat, do: 21
@doc """
Create a new set_queue action struct
## Options:
- Queue id for the packets
```elixir
iex> %SetQueue{id: 1} = SetQueue.new(_id = 1)
```
"""
@spec new(id :: 0..0xFFFFFFFF) :: t()
def new(id) do
%SetQueue{id: id}
end
@spec to_binary(t()) :: <<_::16, _::_*8>>
def to_binary(%SetQueue{id: id}) do
<<21::16, 8::16, id::32>>
end
@spec read(<<_::16, _::_*8>>) :: t()
def read(<<21::16, 8::16, id::32>>) do
%SetQueue{id: id}
end
end