quality: Add some test cases for openflow messages
This commit is contained in:
parent
578c0d1bdc
commit
f3fc896408
13 changed files with 1403 additions and 1321 deletions
|
|
@ -13,11 +13,15 @@ defmodule Openflow.Action.NxConjunction do
|
||||||
|
|
||||||
@spec new(Keyword.t()) :: %NxConjunction{}
|
@spec new(Keyword.t()) :: %NxConjunction{}
|
||||||
def new(options) do
|
def new(options) do
|
||||||
|
clause = (options[:clause] || 0) + 1
|
||||||
n_clauses = options[:n_clauses] || raise "n_clauses must be specified"
|
n_clauses = options[:n_clauses] || raise "n_clauses must be specified"
|
||||||
n_clauses >= 2 || raise "n_clauses must be greater than 1"
|
n_clauses >= 2 || raise "n_clauses must be greater than 1"
|
||||||
|
|
||||||
|
(1 <= clause and clause <= n_clauses and 2 <= n_clauses and n_clauses <= 64) ||
|
||||||
|
raise "conjunction(id, k/n) must satisfy 1 <= k <= n and 2 <= n <= 64"
|
||||||
|
|
||||||
%NxConjunction{
|
%NxConjunction{
|
||||||
clause: (options[:clause] || 0) + 1,
|
clause: clause,
|
||||||
n_clauses: n_clauses,
|
n_clauses: n_clauses,
|
||||||
id: options[:id] || 0
|
id: options[:id] || 0
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
defmodule Openflow.Echo do
|
|
||||||
end
|
|
||||||
|
|
@ -11,8 +11,18 @@ defmodule Openflow.Echo.Reply do
|
||||||
|
|
||||||
alias __MODULE__
|
alias __MODULE__
|
||||||
|
|
||||||
|
@type t :: %Reply{
|
||||||
|
version: 4,
|
||||||
|
xid: 0..0xFFFFFFFF,
|
||||||
|
data: String.t(),
|
||||||
|
datapath_id: String.t() | nil,
|
||||||
|
aux_id: 0..0xFFFF | nil
|
||||||
|
}
|
||||||
|
|
||||||
|
@spec ofp_type :: 3
|
||||||
def ofp_type, do: 3
|
def ofp_type, do: 3
|
||||||
|
|
||||||
|
@spec new(xid: 0..0xFFFFFFFF, data: String.t()) :: t()
|
||||||
def new(options) when is_list(options) do
|
def new(options) when is_list(options) do
|
||||||
%Reply{
|
%Reply{
|
||||||
xid: options[:xid] || 0,
|
xid: options[:xid] || 0,
|
||||||
|
|
@ -20,15 +30,15 @@ defmodule Openflow.Echo.Reply do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def new(data) when is_binary(data) do
|
@spec new(String.t()) :: t()
|
||||||
%Reply{data: data}
|
def new(data) when is_binary(data), do: %Reply{data: data}
|
||||||
end
|
|
||||||
|
|
||||||
def read(data) do
|
@spec new() :: t()
|
||||||
%Reply{data: data}
|
def new, do: new([])
|
||||||
end
|
|
||||||
|
|
||||||
def to_binary(%Reply{data: data}) do
|
@spec read(String.t()) :: t()
|
||||||
data
|
def read(data), do: %Reply{data: data}
|
||||||
end
|
|
||||||
|
@spec to_binary(t()) :: String.t()
|
||||||
|
def to_binary(%Reply{data: data}), do: data
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,18 @@ defmodule Openflow.Echo.Request do
|
||||||
|
|
||||||
alias __MODULE__
|
alias __MODULE__
|
||||||
|
|
||||||
|
@type t :: %Request{
|
||||||
|
version: 4,
|
||||||
|
xid: 0..0xFFFFFFFF,
|
||||||
|
data: String.t(),
|
||||||
|
datapath_id: String.t() | nil,
|
||||||
|
aux_id: 0..0xFFFF | nil
|
||||||
|
}
|
||||||
|
|
||||||
|
@spec ofp_type :: 2
|
||||||
def ofp_type, do: 2
|
def ofp_type, do: 2
|
||||||
|
|
||||||
|
@spec new(xid: 0..0xFFFFFFFF, data: String.t()) :: t()
|
||||||
def new(options) when is_list(options) do
|
def new(options) when is_list(options) do
|
||||||
%Request{
|
%Request{
|
||||||
xid: options[:xid] || 0,
|
xid: options[:xid] || 0,
|
||||||
|
|
@ -20,15 +30,15 @@ defmodule Openflow.Echo.Request do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def new(data) when is_binary(data) do
|
@spec new(String.t()) :: t()
|
||||||
%Request{data: data}
|
def new(data) when is_binary(data), do: %Request{data: data}
|
||||||
end
|
|
||||||
|
|
||||||
def read(data) do
|
@spec new() :: t()
|
||||||
%Request{data: data}
|
def new, do: new([])
|
||||||
end
|
|
||||||
|
|
||||||
def to_binary(%Request{data: data}) do
|
@spec read(String.t()) :: t()
|
||||||
data
|
def read(data), do: %Request{data: data}
|
||||||
end
|
|
||||||
|
@spec to_binary(t()) :: String.t()
|
||||||
|
def to_binary(%Request{data: data}), do: data
|
||||||
end
|
end
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -727,6 +727,18 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> :multipart_buffer_overflow
|
_class, _reason -> :multipart_buffer_overflow
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def to_int(:multipart_request_timeout, :bad_request) do
|
||||||
|
bad_request_to_int(:multipart_request_timeout)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :multipart_request_timeout
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(:multipart_reply_timeout, :bad_request) do
|
||||||
|
bad_request_to_int(:multipart_reply_timeout)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :multipart_reply_timeout
|
||||||
|
end
|
||||||
|
|
||||||
def to_int(:nxm_invalid, :bad_request) do
|
def to_int(:nxm_invalid, :bad_request) do
|
||||||
bad_request_to_int(:nxm_invalid)
|
bad_request_to_int(:nxm_invalid)
|
||||||
catch
|
catch
|
||||||
|
|
@ -881,10 +893,10 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> :must_be_zero
|
_class, _reason -> :must_be_zero
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_int(:conntrack_not_supported, :bad_action) do
|
def to_int(:conntrack_datapath_support, :bad_action) do
|
||||||
bad_action_to_int(:conntrack_not_supported)
|
bad_action_to_int(:conntrack_datapath_support)
|
||||||
catch
|
catch
|
||||||
_class, _reason -> :conntrack_not_supported
|
_class, _reason -> :conntrack_datapath_support
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_int(:bad_conjunction, :bad_action) do
|
def to_int(:bad_conjunction, :bad_action) do
|
||||||
|
|
@ -951,6 +963,12 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> :eperm
|
_class, _reason -> :eperm
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def to_int(:dup_inst, :bad_instruction) do
|
||||||
|
bad_instruction_to_int(:dup_inst)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :dup_inst
|
||||||
|
end
|
||||||
|
|
||||||
def to_int(_int, :bad_instruction) do
|
def to_int(_int, :bad_instruction) do
|
||||||
throw(:bad_enum)
|
throw(:bad_enum)
|
||||||
end
|
end
|
||||||
|
|
@ -1027,6 +1045,12 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> :eperm
|
_class, _reason -> :eperm
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def to_int(:conntrack_datapath_support, :bad_match) do
|
||||||
|
bad_match_to_int(:conntrack_datapath_support)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :conntrack_datapath_support
|
||||||
|
end
|
||||||
|
|
||||||
def to_int(_int, :bad_match) do
|
def to_int(_int, :bad_match) do
|
||||||
throw(:bad_enum)
|
throw(:bad_enum)
|
||||||
end
|
end
|
||||||
|
|
@ -1173,6 +1197,18 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> :eperm
|
_class, _reason -> :eperm
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def to_int(:unknown_bucket, :group_mod_failed) do
|
||||||
|
group_mod_failed_to_int(:unknown_bucket)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :unknown_bucket
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(:bucket_exists, :group_mod_failed) do
|
||||||
|
group_mod_failed_to_int(:bucket_exists)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :bucket_exists
|
||||||
|
end
|
||||||
|
|
||||||
def to_int(_int, :group_mod_failed) do
|
def to_int(_int, :group_mod_failed) do
|
||||||
throw(:bad_enum)
|
throw(:bad_enum)
|
||||||
end
|
end
|
||||||
|
|
@ -4125,18 +4161,6 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> Openflow.Action.NxSetTunnel
|
_class, _reason -> Openflow.Action.NxSetTunnel
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_int(Openflow.Action.NxSetQueue, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_int(Openflow.Action.NxSetQueue)
|
|
||||||
catch
|
|
||||||
_class, _reason -> Openflow.Action.NxSetQueue
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_int(Openflow.Action.NxPopQueue, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_int(Openflow.Action.NxPopQueue)
|
|
||||||
catch
|
|
||||||
_class, _reason -> Openflow.Action.NxPopQueue
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_int(Openflow.Action.NxRegMove, :nicira_ext_action) do
|
def to_int(Openflow.Action.NxRegMove, :nicira_ext_action) do
|
||||||
nicira_ext_action_to_int(Openflow.Action.NxRegMove)
|
nicira_ext_action_to_int(Openflow.Action.NxRegMove)
|
||||||
catch
|
catch
|
||||||
|
|
@ -4233,30 +4257,6 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> Openflow.Action.NxWriteMetadata
|
_class, _reason -> Openflow.Action.NxWriteMetadata
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_int(Openflow.Action.NxPushMpls, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_int(Openflow.Action.NxPushMpls)
|
|
||||||
catch
|
|
||||||
_class, _reason -> Openflow.Action.NxPushMpls
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_int(Openflow.Action.NxPopMpls, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_int(Openflow.Action.NxPopMpls)
|
|
||||||
catch
|
|
||||||
_class, _reason -> Openflow.Action.NxPopMpls
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_int(Openflow.Action.NxSetMplsTtl, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_int(Openflow.Action.NxSetMplsTtl)
|
|
||||||
catch
|
|
||||||
_class, _reason -> Openflow.Action.NxSetMplsTtl
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_int(Openflow.Action.NxDecMplsTtl, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_int(Openflow.Action.NxDecMplsTtl)
|
|
||||||
catch
|
|
||||||
_class, _reason -> Openflow.Action.NxDecMplsTtl
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_int(Openflow.Action.NxStackPush, :nicira_ext_action) do
|
def to_int(Openflow.Action.NxStackPush, :nicira_ext_action) do
|
||||||
nicira_ext_action_to_int(Openflow.Action.NxStackPush)
|
nicira_ext_action_to_int(Openflow.Action.NxStackPush)
|
||||||
catch
|
catch
|
||||||
|
|
@ -4275,18 +4275,6 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> Openflow.Action.NxSample
|
_class, _reason -> Openflow.Action.NxSample
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_int(Openflow.Action.NxSetMplsLabel, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_int(Openflow.Action.NxSetMplsLabel)
|
|
||||||
catch
|
|
||||||
_class, _reason -> Openflow.Action.NxSetMplsLabel
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_int(Openflow.Action.NxSetMplsTc, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_int(Openflow.Action.NxSetMplsTc)
|
|
||||||
catch
|
|
||||||
_class, _reason -> Openflow.Action.NxSetMplsTc
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_int(Openflow.Action.NxOutputReg2, :nicira_ext_action) do
|
def to_int(Openflow.Action.NxOutputReg2, :nicira_ext_action) do
|
||||||
nicira_ext_action_to_int(Openflow.Action.NxOutputReg2)
|
nicira_ext_action_to_int(Openflow.Action.NxOutputReg2)
|
||||||
catch
|
catch
|
||||||
|
|
@ -5895,6 +5883,18 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> 13
|
_class, _reason -> 13
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def to_atom(0xE, :bad_request) do
|
||||||
|
bad_request_to_atom(0xE)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 14
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(0xF, :bad_request) do
|
||||||
|
bad_request_to_atom(0xF)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 15
|
||||||
|
end
|
||||||
|
|
||||||
def to_atom(0x100, :bad_request) do
|
def to_atom(0x100, :bad_request) do
|
||||||
bad_request_to_atom(0x100)
|
bad_request_to_atom(0x100)
|
||||||
catch
|
catch
|
||||||
|
|
@ -6119,6 +6119,12 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> 8
|
_class, _reason -> 8
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def to_atom(0x100, :bad_instruction) do
|
||||||
|
bad_instruction_to_atom(0x100)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 256
|
||||||
|
end
|
||||||
|
|
||||||
def to_atom(_, :bad_instruction) do
|
def to_atom(_, :bad_instruction) do
|
||||||
throw(:bad_enum)
|
throw(:bad_enum)
|
||||||
end
|
end
|
||||||
|
|
@ -6195,6 +6201,12 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> 11
|
_class, _reason -> 11
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def to_atom(0x108, :bad_match) do
|
||||||
|
bad_match_to_atom(0x108)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 264
|
||||||
|
end
|
||||||
|
|
||||||
def to_atom(_, :bad_match) do
|
def to_atom(_, :bad_match) do
|
||||||
throw(:bad_enum)
|
throw(:bad_enum)
|
||||||
end
|
end
|
||||||
|
|
@ -6341,6 +6353,18 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> 14
|
_class, _reason -> 14
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def to_atom(0xF, :group_mod_failed) do
|
||||||
|
group_mod_failed_to_atom(0xF)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 15
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(0x10, :group_mod_failed) do
|
||||||
|
group_mod_failed_to_atom(0x10)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 16
|
||||||
|
end
|
||||||
|
|
||||||
def to_atom(_, :group_mod_failed) do
|
def to_atom(_, :group_mod_failed) do
|
||||||
throw(:bad_enum)
|
throw(:bad_enum)
|
||||||
end
|
end
|
||||||
|
|
@ -9293,18 +9317,6 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> 2
|
_class, _reason -> 2
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_atom(0x4, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_atom(0x4)
|
|
||||||
catch
|
|
||||||
_class, _reason -> 4
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_atom(0x5, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_atom(0x5)
|
|
||||||
catch
|
|
||||||
_class, _reason -> 5
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_atom(0x6, :nicira_ext_action) do
|
def to_atom(0x6, :nicira_ext_action) do
|
||||||
nicira_ext_action_to_atom(0x6)
|
nicira_ext_action_to_atom(0x6)
|
||||||
catch
|
catch
|
||||||
|
|
@ -9401,30 +9413,6 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> 22
|
_class, _reason -> 22
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_atom(0x17, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_atom(0x17)
|
|
||||||
catch
|
|
||||||
_class, _reason -> 23
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_atom(0x18, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_atom(0x18)
|
|
||||||
catch
|
|
||||||
_class, _reason -> 24
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_atom(0x19, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_atom(0x19)
|
|
||||||
catch
|
|
||||||
_class, _reason -> 25
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_atom(0x1A, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_atom(0x1A)
|
|
||||||
catch
|
|
||||||
_class, _reason -> 26
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_atom(0x1B, :nicira_ext_action) do
|
def to_atom(0x1B, :nicira_ext_action) do
|
||||||
nicira_ext_action_to_atom(0x1B)
|
nicira_ext_action_to_atom(0x1B)
|
||||||
catch
|
catch
|
||||||
|
|
@ -9443,18 +9431,6 @@ defmodule Openflow.Enums do
|
||||||
_class, _reason -> 29
|
_class, _reason -> 29
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_atom(0x1E, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_atom(0x1E)
|
|
||||||
catch
|
|
||||||
_class, _reason -> 30
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_atom(0x1F, :nicira_ext_action) do
|
|
||||||
nicira_ext_action_to_atom(0x1F)
|
|
||||||
catch
|
|
||||||
_class, _reason -> 31
|
|
||||||
end
|
|
||||||
|
|
||||||
def to_atom(0x20, :nicira_ext_action) do
|
def to_atom(0x20, :nicira_ext_action) do
|
||||||
nicira_ext_action_to_atom(0x20)
|
nicira_ext_action_to_atom(0x20)
|
||||||
catch
|
catch
|
||||||
|
|
@ -10573,6 +10549,8 @@ defmodule Openflow.Enums do
|
||||||
def bad_request_to_int(:bad_port), do: 0xB
|
def bad_request_to_int(:bad_port), do: 0xB
|
||||||
def bad_request_to_int(:bad_packet), do: 0xC
|
def bad_request_to_int(:bad_packet), do: 0xC
|
||||||
def bad_request_to_int(:multipart_buffer_overflow), do: 0xD
|
def bad_request_to_int(:multipart_buffer_overflow), do: 0xD
|
||||||
|
def bad_request_to_int(:multipart_request_timeout), do: 0xE
|
||||||
|
def bad_request_to_int(:multipart_reply_timeout), do: 0xF
|
||||||
def bad_request_to_int(:nxm_invalid), do: 0x100
|
def bad_request_to_int(:nxm_invalid), do: 0x100
|
||||||
def bad_request_to_int(:nxm_bad_type), do: 0x101
|
def bad_request_to_int(:nxm_bad_type), do: 0x101
|
||||||
def bad_request_to_int(:must_be_zero), do: 0x203
|
def bad_request_to_int(:must_be_zero), do: 0x203
|
||||||
|
|
@ -10596,6 +10574,8 @@ defmodule Openflow.Enums do
|
||||||
def bad_request_to_atom(0xB), do: :bad_port
|
def bad_request_to_atom(0xB), do: :bad_port
|
||||||
def bad_request_to_atom(0xC), do: :bad_packet
|
def bad_request_to_atom(0xC), do: :bad_packet
|
||||||
def bad_request_to_atom(0xD), do: :multipart_buffer_overflow
|
def bad_request_to_atom(0xD), do: :multipart_buffer_overflow
|
||||||
|
def bad_request_to_atom(0xE), do: :multipart_request_timeout
|
||||||
|
def bad_request_to_atom(0xF), do: :multipart_reply_timeout
|
||||||
def bad_request_to_atom(0x100), do: :nxm_invalid
|
def bad_request_to_atom(0x100), do: :nxm_invalid
|
||||||
def bad_request_to_atom(0x101), do: :nxm_bad_type
|
def bad_request_to_atom(0x101), do: :nxm_bad_type
|
||||||
def bad_request_to_atom(0x203), do: :must_be_zero
|
def bad_request_to_atom(0x203), do: :must_be_zero
|
||||||
|
|
@ -10622,7 +10602,7 @@ defmodule Openflow.Enums do
|
||||||
def bad_action_to_int(:bad_set_len), do: 0xE
|
def bad_action_to_int(:bad_set_len), do: 0xE
|
||||||
def bad_action_to_int(:bad_set_argument), do: 0xF
|
def bad_action_to_int(:bad_set_argument), do: 0xF
|
||||||
def bad_action_to_int(:must_be_zero), do: 0x100
|
def bad_action_to_int(:must_be_zero), do: 0x100
|
||||||
def bad_action_to_int(:conntrack_not_supported), do: 0x109
|
def bad_action_to_int(:conntrack_datapath_support), do: 0x109
|
||||||
def bad_action_to_int(:bad_conjunction), do: 0x20E
|
def bad_action_to_int(:bad_conjunction), do: 0x20E
|
||||||
def bad_action_to_int(_), do: throw(:bad_enum)
|
def bad_action_to_int(_), do: throw(:bad_enum)
|
||||||
def bad_action_to_atom(0x0), do: :bad_type
|
def bad_action_to_atom(0x0), do: :bad_type
|
||||||
|
|
@ -10642,7 +10622,7 @@ defmodule Openflow.Enums do
|
||||||
def bad_action_to_atom(0xE), do: :bad_set_len
|
def bad_action_to_atom(0xE), do: :bad_set_len
|
||||||
def bad_action_to_atom(0xF), do: :bad_set_argument
|
def bad_action_to_atom(0xF), do: :bad_set_argument
|
||||||
def bad_action_to_atom(0x100), do: :must_be_zero
|
def bad_action_to_atom(0x100), do: :must_be_zero
|
||||||
def bad_action_to_atom(0x109), do: :conntrack_not_supported
|
def bad_action_to_atom(0x109), do: :conntrack_datapath_support
|
||||||
def bad_action_to_atom(0x20E), do: :bad_conjunction
|
def bad_action_to_atom(0x20E), do: :bad_conjunction
|
||||||
def bad_action_to_atom(_), do: throw(:bad_enum)
|
def bad_action_to_atom(_), do: throw(:bad_enum)
|
||||||
def bad_instruction_to_int(:unknown_instruction), do: 0x0
|
def bad_instruction_to_int(:unknown_instruction), do: 0x0
|
||||||
|
|
@ -10654,6 +10634,7 @@ defmodule Openflow.Enums do
|
||||||
def bad_instruction_to_int(:bad_exp_type), do: 0x6
|
def bad_instruction_to_int(:bad_exp_type), do: 0x6
|
||||||
def bad_instruction_to_int(:bad_len), do: 0x7
|
def bad_instruction_to_int(:bad_len), do: 0x7
|
||||||
def bad_instruction_to_int(:eperm), do: 0x8
|
def bad_instruction_to_int(:eperm), do: 0x8
|
||||||
|
def bad_instruction_to_int(:dup_inst), do: 0x100
|
||||||
def bad_instruction_to_int(_), do: throw(:bad_enum)
|
def bad_instruction_to_int(_), do: throw(:bad_enum)
|
||||||
def bad_instruction_to_atom(0x0), do: :unknown_instruction
|
def bad_instruction_to_atom(0x0), do: :unknown_instruction
|
||||||
def bad_instruction_to_atom(0x1), do: :unsupported_instruction
|
def bad_instruction_to_atom(0x1), do: :unsupported_instruction
|
||||||
|
|
@ -10664,6 +10645,7 @@ defmodule Openflow.Enums do
|
||||||
def bad_instruction_to_atom(0x6), do: :bad_exp_type
|
def bad_instruction_to_atom(0x6), do: :bad_exp_type
|
||||||
def bad_instruction_to_atom(0x7), do: :bad_len
|
def bad_instruction_to_atom(0x7), do: :bad_len
|
||||||
def bad_instruction_to_atom(0x8), do: :eperm
|
def bad_instruction_to_atom(0x8), do: :eperm
|
||||||
|
def bad_instruction_to_atom(0x100), do: :dup_inst
|
||||||
def bad_instruction_to_atom(_), do: throw(:bad_enum)
|
def bad_instruction_to_atom(_), do: throw(:bad_enum)
|
||||||
def bad_match_to_int(:bad_type), do: 0x0
|
def bad_match_to_int(:bad_type), do: 0x0
|
||||||
def bad_match_to_int(:bad_len), do: 0x1
|
def bad_match_to_int(:bad_len), do: 0x1
|
||||||
|
|
@ -10677,6 +10659,7 @@ defmodule Openflow.Enums do
|
||||||
def bad_match_to_int(:bad_prereq), do: 0x9
|
def bad_match_to_int(:bad_prereq), do: 0x9
|
||||||
def bad_match_to_int(:dup_field), do: 0xA
|
def bad_match_to_int(:dup_field), do: 0xA
|
||||||
def bad_match_to_int(:eperm), do: 0xB
|
def bad_match_to_int(:eperm), do: 0xB
|
||||||
|
def bad_match_to_int(:conntrack_datapath_support), do: 0x108
|
||||||
def bad_match_to_int(_), do: throw(:bad_enum)
|
def bad_match_to_int(_), do: throw(:bad_enum)
|
||||||
def bad_match_to_atom(0x0), do: :bad_type
|
def bad_match_to_atom(0x0), do: :bad_type
|
||||||
def bad_match_to_atom(0x1), do: :bad_len
|
def bad_match_to_atom(0x1), do: :bad_len
|
||||||
|
|
@ -10690,6 +10673,7 @@ defmodule Openflow.Enums do
|
||||||
def bad_match_to_atom(0x9), do: :bad_prereq
|
def bad_match_to_atom(0x9), do: :bad_prereq
|
||||||
def bad_match_to_atom(0xA), do: :dup_field
|
def bad_match_to_atom(0xA), do: :dup_field
|
||||||
def bad_match_to_atom(0xB), do: :eperm
|
def bad_match_to_atom(0xB), do: :eperm
|
||||||
|
def bad_match_to_atom(0x108), do: :conntrack_datapath_support
|
||||||
def bad_match_to_atom(_), do: throw(:bad_enum)
|
def bad_match_to_atom(_), do: throw(:bad_enum)
|
||||||
def flow_mod_failed_to_int(:unknown), do: 0x0
|
def flow_mod_failed_to_int(:unknown), do: 0x0
|
||||||
def flow_mod_failed_to_int(:table_full), do: 0x1
|
def flow_mod_failed_to_int(:table_full), do: 0x1
|
||||||
|
|
@ -10724,6 +10708,8 @@ defmodule Openflow.Enums do
|
||||||
def group_mod_failed_to_int(:bad_bucket), do: 0xC
|
def group_mod_failed_to_int(:bad_bucket), do: 0xC
|
||||||
def group_mod_failed_to_int(:bad_watch), do: 0xD
|
def group_mod_failed_to_int(:bad_watch), do: 0xD
|
||||||
def group_mod_failed_to_int(:eperm), do: 0xE
|
def group_mod_failed_to_int(:eperm), do: 0xE
|
||||||
|
def group_mod_failed_to_int(:unknown_bucket), do: 0xF
|
||||||
|
def group_mod_failed_to_int(:bucket_exists), do: 0x10
|
||||||
def group_mod_failed_to_int(_), do: throw(:bad_enum)
|
def group_mod_failed_to_int(_), do: throw(:bad_enum)
|
||||||
def group_mod_failed_to_atom(0x0), do: :group_exists
|
def group_mod_failed_to_atom(0x0), do: :group_exists
|
||||||
def group_mod_failed_to_atom(0x1), do: :invalid_group
|
def group_mod_failed_to_atom(0x1), do: :invalid_group
|
||||||
|
|
@ -10740,6 +10726,8 @@ defmodule Openflow.Enums do
|
||||||
def group_mod_failed_to_atom(0xC), do: :bad_bucket
|
def group_mod_failed_to_atom(0xC), do: :bad_bucket
|
||||||
def group_mod_failed_to_atom(0xD), do: :bad_watch
|
def group_mod_failed_to_atom(0xD), do: :bad_watch
|
||||||
def group_mod_failed_to_atom(0xE), do: :eperm
|
def group_mod_failed_to_atom(0xE), do: :eperm
|
||||||
|
def group_mod_failed_to_atom(0xF), do: :unknown_bucket
|
||||||
|
def group_mod_failed_to_atom(0x10), do: :bucket_exists
|
||||||
def group_mod_failed_to_atom(_), do: throw(:bad_enum)
|
def group_mod_failed_to_atom(_), do: throw(:bad_enum)
|
||||||
def port_mod_failed_to_int(:bad_port), do: 0x0
|
def port_mod_failed_to_int(:bad_port), do: 0x0
|
||||||
def port_mod_failed_to_int(:bad_hw_addr), do: 0x1
|
def port_mod_failed_to_int(:bad_hw_addr), do: 0x1
|
||||||
|
|
@ -11755,8 +11743,6 @@ defmodule Openflow.Enums do
|
||||||
def onf_ext_action_to_atom(_), do: throw(:bad_enum)
|
def onf_ext_action_to_atom(_), do: throw(:bad_enum)
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxResubmit), do: 0x1
|
def nicira_ext_action_to_int(Openflow.Action.NxResubmit), do: 0x1
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxSetTunnel), do: 0x2
|
def nicira_ext_action_to_int(Openflow.Action.NxSetTunnel), do: 0x2
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxSetQueue), do: 0x4
|
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxPopQueue), do: 0x5
|
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxRegMove), do: 0x6
|
def nicira_ext_action_to_int(Openflow.Action.NxRegMove), do: 0x6
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxRegLoad), do: 0x7
|
def nicira_ext_action_to_int(Openflow.Action.NxRegLoad), do: 0x7
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxNote), do: 0x8
|
def nicira_ext_action_to_int(Openflow.Action.NxNote), do: 0x8
|
||||||
|
|
@ -11773,15 +11759,9 @@ defmodule Openflow.Enums do
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxController), do: 0x14
|
def nicira_ext_action_to_int(Openflow.Action.NxController), do: 0x14
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxDecTtlCntIds), do: 0x15
|
def nicira_ext_action_to_int(Openflow.Action.NxDecTtlCntIds), do: 0x15
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxWriteMetadata), do: 0x16
|
def nicira_ext_action_to_int(Openflow.Action.NxWriteMetadata), do: 0x16
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxPushMpls), do: 0x17
|
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxPopMpls), do: 0x18
|
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxSetMplsTtl), do: 0x19
|
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxDecMplsTtl), do: 0x1A
|
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxStackPush), do: 0x1B
|
def nicira_ext_action_to_int(Openflow.Action.NxStackPush), do: 0x1B
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxStackPop), do: 0x1C
|
def nicira_ext_action_to_int(Openflow.Action.NxStackPop), do: 0x1C
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxSample), do: 0x1D
|
def nicira_ext_action_to_int(Openflow.Action.NxSample), do: 0x1D
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxSetMplsLabel), do: 0x1E
|
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxSetMplsTc), do: 0x1F
|
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxOutputReg2), do: 0x20
|
def nicira_ext_action_to_int(Openflow.Action.NxOutputReg2), do: 0x20
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxRegLoad2), do: 0x21
|
def nicira_ext_action_to_int(Openflow.Action.NxRegLoad2), do: 0x21
|
||||||
def nicira_ext_action_to_int(Openflow.Action.NxConjunction), do: 0x22
|
def nicira_ext_action_to_int(Openflow.Action.NxConjunction), do: 0x22
|
||||||
|
|
@ -11802,8 +11782,6 @@ defmodule Openflow.Enums do
|
||||||
def nicira_ext_action_to_int(_), do: throw(:bad_enum)
|
def nicira_ext_action_to_int(_), do: throw(:bad_enum)
|
||||||
def nicira_ext_action_to_atom(0x1), do: Openflow.Action.NxResubmit
|
def nicira_ext_action_to_atom(0x1), do: Openflow.Action.NxResubmit
|
||||||
def nicira_ext_action_to_atom(0x2), do: Openflow.Action.NxSetTunnel
|
def nicira_ext_action_to_atom(0x2), do: Openflow.Action.NxSetTunnel
|
||||||
def nicira_ext_action_to_atom(0x4), do: Openflow.Action.NxSetQueue
|
|
||||||
def nicira_ext_action_to_atom(0x5), do: Openflow.Action.NxPopQueue
|
|
||||||
def nicira_ext_action_to_atom(0x6), do: Openflow.Action.NxRegMove
|
def nicira_ext_action_to_atom(0x6), do: Openflow.Action.NxRegMove
|
||||||
def nicira_ext_action_to_atom(0x7), do: Openflow.Action.NxRegLoad
|
def nicira_ext_action_to_atom(0x7), do: Openflow.Action.NxRegLoad
|
||||||
def nicira_ext_action_to_atom(0x8), do: Openflow.Action.NxNote
|
def nicira_ext_action_to_atom(0x8), do: Openflow.Action.NxNote
|
||||||
|
|
@ -11820,15 +11798,9 @@ defmodule Openflow.Enums do
|
||||||
def nicira_ext_action_to_atom(0x14), do: Openflow.Action.NxController
|
def nicira_ext_action_to_atom(0x14), do: Openflow.Action.NxController
|
||||||
def nicira_ext_action_to_atom(0x15), do: Openflow.Action.NxDecTtlCntIds
|
def nicira_ext_action_to_atom(0x15), do: Openflow.Action.NxDecTtlCntIds
|
||||||
def nicira_ext_action_to_atom(0x16), do: Openflow.Action.NxWriteMetadata
|
def nicira_ext_action_to_atom(0x16), do: Openflow.Action.NxWriteMetadata
|
||||||
def nicira_ext_action_to_atom(0x17), do: Openflow.Action.NxPushMpls
|
|
||||||
def nicira_ext_action_to_atom(0x18), do: Openflow.Action.NxPopMpls
|
|
||||||
def nicira_ext_action_to_atom(0x19), do: Openflow.Action.NxSetMplsTtl
|
|
||||||
def nicira_ext_action_to_atom(0x1A), do: Openflow.Action.NxDecMplsTtl
|
|
||||||
def nicira_ext_action_to_atom(0x1B), do: Openflow.Action.NxStackPush
|
def nicira_ext_action_to_atom(0x1B), do: Openflow.Action.NxStackPush
|
||||||
def nicira_ext_action_to_atom(0x1C), do: Openflow.Action.NxStackPop
|
def nicira_ext_action_to_atom(0x1C), do: Openflow.Action.NxStackPop
|
||||||
def nicira_ext_action_to_atom(0x1D), do: Openflow.Action.NxSample
|
def nicira_ext_action_to_atom(0x1D), do: Openflow.Action.NxSample
|
||||||
def nicira_ext_action_to_atom(0x1E), do: Openflow.Action.NxSetMplsLabel
|
|
||||||
def nicira_ext_action_to_atom(0x1F), do: Openflow.Action.NxSetMplsTc
|
|
||||||
def nicira_ext_action_to_atom(0x20), do: Openflow.Action.NxOutputReg2
|
def nicira_ext_action_to_atom(0x20), do: Openflow.Action.NxOutputReg2
|
||||||
def nicira_ext_action_to_atom(0x21), do: Openflow.Action.NxRegLoad2
|
def nicira_ext_action_to_atom(0x21), do: Openflow.Action.NxRegLoad2
|
||||||
def nicira_ext_action_to_atom(0x22), do: Openflow.Action.NxConjunction
|
def nicira_ext_action_to_atom(0x22), do: Openflow.Action.NxConjunction
|
||||||
|
|
@ -13000,6 +12972,8 @@ defmodule Openflow.Enums do
|
||||||
bad_port: 11,
|
bad_port: 11,
|
||||||
bad_packet: 12,
|
bad_packet: 12,
|
||||||
multipart_buffer_overflow: 13,
|
multipart_buffer_overflow: 13,
|
||||||
|
multipart_request_timeout: 14,
|
||||||
|
multipart_reply_timeout: 15,
|
||||||
nxm_invalid: 256,
|
nxm_invalid: 256,
|
||||||
nxm_bad_type: 257,
|
nxm_bad_type: 257,
|
||||||
must_be_zero: 515,
|
must_be_zero: 515,
|
||||||
|
|
@ -13029,7 +13003,7 @@ defmodule Openflow.Enums do
|
||||||
bad_set_len: 14,
|
bad_set_len: 14,
|
||||||
bad_set_argument: 15,
|
bad_set_argument: 15,
|
||||||
must_be_zero: 256,
|
must_be_zero: 256,
|
||||||
conntrack_not_supported: 265,
|
conntrack_datapath_support: 265,
|
||||||
bad_conjunction: 526
|
bad_conjunction: 526
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -13043,7 +13017,8 @@ defmodule Openflow.Enums do
|
||||||
bad_experimeter: 5,
|
bad_experimeter: 5,
|
||||||
bad_exp_type: 6,
|
bad_exp_type: 6,
|
||||||
bad_len: 7,
|
bad_len: 7,
|
||||||
eperm: 8
|
eperm: 8,
|
||||||
|
dup_inst: 256
|
||||||
]
|
]
|
||||||
|
|
||||||
defp enum_of(:bad_match),
|
defp enum_of(:bad_match),
|
||||||
|
|
@ -13059,7 +13034,8 @@ defmodule Openflow.Enums do
|
||||||
bad_mask: 8,
|
bad_mask: 8,
|
||||||
bad_prereq: 9,
|
bad_prereq: 9,
|
||||||
dup_field: 10,
|
dup_field: 10,
|
||||||
eperm: 11
|
eperm: 11,
|
||||||
|
conntrack_datapath_support: 264
|
||||||
]
|
]
|
||||||
|
|
||||||
defp enum_of(:flow_mod_failed),
|
defp enum_of(:flow_mod_failed),
|
||||||
|
|
@ -13090,7 +13066,9 @@ defmodule Openflow.Enums do
|
||||||
bad_command: 11,
|
bad_command: 11,
|
||||||
bad_bucket: 12,
|
bad_bucket: 12,
|
||||||
bad_watch: 13,
|
bad_watch: 13,
|
||||||
eperm: 14
|
eperm: 14,
|
||||||
|
unknown_bucket: 15,
|
||||||
|
bucket_exists: 16
|
||||||
]
|
]
|
||||||
|
|
||||||
defp enum_of(:port_mod_failed),
|
defp enum_of(:port_mod_failed),
|
||||||
|
|
@ -13577,8 +13555,6 @@ defmodule Openflow.Enums do
|
||||||
do: [
|
do: [
|
||||||
{Openflow.Action.NxResubmit, 1},
|
{Openflow.Action.NxResubmit, 1},
|
||||||
{Openflow.Action.NxSetTunnel, 2},
|
{Openflow.Action.NxSetTunnel, 2},
|
||||||
{Openflow.Action.NxSetQueue, 4},
|
|
||||||
{Openflow.Action.NxPopQueue, 5},
|
|
||||||
{Openflow.Action.NxRegMove, 6},
|
{Openflow.Action.NxRegMove, 6},
|
||||||
{Openflow.Action.NxRegLoad, 7},
|
{Openflow.Action.NxRegLoad, 7},
|
||||||
{Openflow.Action.NxNote, 8},
|
{Openflow.Action.NxNote, 8},
|
||||||
|
|
@ -13595,15 +13571,9 @@ defmodule Openflow.Enums do
|
||||||
{Openflow.Action.NxController, 20},
|
{Openflow.Action.NxController, 20},
|
||||||
{Openflow.Action.NxDecTtlCntIds, 21},
|
{Openflow.Action.NxDecTtlCntIds, 21},
|
||||||
{Openflow.Action.NxWriteMetadata, 22},
|
{Openflow.Action.NxWriteMetadata, 22},
|
||||||
{Openflow.Action.NxPushMpls, 23},
|
|
||||||
{Openflow.Action.NxPopMpls, 24},
|
|
||||||
{Openflow.Action.NxSetMplsTtl, 25},
|
|
||||||
{Openflow.Action.NxDecMplsTtl, 26},
|
|
||||||
{Openflow.Action.NxStackPush, 27},
|
{Openflow.Action.NxStackPush, 27},
|
||||||
{Openflow.Action.NxStackPop, 28},
|
{Openflow.Action.NxStackPop, 28},
|
||||||
{Openflow.Action.NxSample, 29},
|
{Openflow.Action.NxSample, 29},
|
||||||
{Openflow.Action.NxSetMplsLabel, 30},
|
|
||||||
{Openflow.Action.NxSetMplsTc, 31},
|
|
||||||
{Openflow.Action.NxOutputReg2, 32},
|
{Openflow.Action.NxOutputReg2, 32},
|
||||||
{Openflow.Action.NxRegLoad2, 33},
|
{Openflow.Action.NxRegLoad2, 33},
|
||||||
{Openflow.Action.NxConjunction, 34},
|
{Openflow.Action.NxConjunction, 34},
|
||||||
|
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
defmodule Openflow.Features do
|
|
||||||
end
|
|
||||||
|
|
@ -11,11 +11,38 @@ defmodule Openflow.Features.Reply do
|
||||||
|
|
||||||
alias __MODULE__
|
alias __MODULE__
|
||||||
|
|
||||||
|
@type t :: %Reply{
|
||||||
|
version: 4,
|
||||||
|
xid: 0..0xFFFFFFFF,
|
||||||
|
datapath_id: String.t() | nil,
|
||||||
|
n_buffers: 0..0xFFFFFFFF,
|
||||||
|
n_tables: 0..0xFF,
|
||||||
|
aux_id: 0..0xFF,
|
||||||
|
capabilities: [
|
||||||
|
:flow_stats
|
||||||
|
| :table_stats
|
||||||
|
| :port_stats
|
||||||
|
| :group_stats
|
||||||
|
| :ip_reasm
|
||||||
|
| :queue_stats
|
||||||
|
| :arp_match_ip
|
||||||
|
| :port_blocked
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
@spec ofp_type :: 6
|
||||||
def ofp_type, do: 6
|
def ofp_type, do: 6
|
||||||
|
|
||||||
def read(
|
@spec read(<<_::192>>) :: t()
|
||||||
<<datapath_id::64-bits, n_buf::32, n_tab::8, aux_id::8, _pad::16, caps_int::32, _rsv::32>>
|
def read(<<
|
||||||
) do
|
datapath_id::64-bits,
|
||||||
|
n_buf::32,
|
||||||
|
n_tab::8,
|
||||||
|
aux_id::8,
|
||||||
|
_pad::16,
|
||||||
|
caps_int::32,
|
||||||
|
_rsv::32
|
||||||
|
>>) do
|
||||||
dpid = Openflow.Utils.to_hex_string(datapath_id)
|
dpid = Openflow.Utils.to_hex_string(datapath_id)
|
||||||
flags = Openflow.Enums.int_to_flags(caps_int, :switch_capabilities)
|
flags = Openflow.Enums.int_to_flags(caps_int, :switch_capabilities)
|
||||||
|
|
||||||
|
|
@ -28,6 +55,7 @@ defmodule Openflow.Features.Reply do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@spec to_binary(t()) :: <<_::192>>
|
||||||
def to_binary(%Reply{
|
def to_binary(%Reply{
|
||||||
datapath_id: datapath_id,
|
datapath_id: datapath_id,
|
||||||
n_buffers: n_buf,
|
n_buffers: n_buf,
|
||||||
|
|
|
||||||
|
|
@ -10,17 +10,22 @@ defmodule Openflow.Features.Request do
|
||||||
|
|
||||||
alias __MODULE__
|
alias __MODULE__
|
||||||
|
|
||||||
|
@type t :: %Request{
|
||||||
|
version: 4,
|
||||||
|
xid: 0..0xFFFFFFFF,
|
||||||
|
datapath_id: String.t() | nil,
|
||||||
|
aux_id: 0..0xFFFF | nil
|
||||||
|
}
|
||||||
|
|
||||||
|
@spec ofp_type :: 5
|
||||||
def ofp_type, do: 5
|
def ofp_type, do: 5
|
||||||
|
|
||||||
def new(xid \\ 0) do
|
@spec new(0..0xFFFF) :: t()
|
||||||
%Request{xid: xid}
|
def new(xid \\ 0), do: %Request{xid: xid}
|
||||||
end
|
|
||||||
|
|
||||||
def read(_) do
|
@spec read(any()) :: t()
|
||||||
%Request{}
|
def read(_), do: %Request{}
|
||||||
end
|
|
||||||
|
|
||||||
def to_binary(%Request{}) do
|
@spec to_binary(t()) :: <<>>
|
||||||
<<>>
|
def to_binary(%Request{}), do: <<>>
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
6
mix.exs
6
mix.exs
|
|
@ -7,10 +7,12 @@ defmodule Tres.Mixfile do
|
||||||
version: "0.1.0",
|
version: "0.1.0",
|
||||||
elixir: "~> 1.8",
|
elixir: "~> 1.8",
|
||||||
start_permanent: Mix.env() == :prod,
|
start_permanent: Mix.env() == :prod,
|
||||||
escript: [main_module: Openflow.EnumGen, name: :enum_gen, path: "bin/enum_gen"],
|
|
||||||
compilers: [:erlang] ++ Mix.compilers(),
|
compilers: [:erlang] ++ Mix.compilers(),
|
||||||
deps: deps(),
|
deps: deps(),
|
||||||
aliases: [test: "test --no-start", compile: ["escript.build"]],
|
aliases: [
|
||||||
|
test: "test --no-start",
|
||||||
|
compile: ["run priv/openflow_enum_gen.exs"]
|
||||||
|
],
|
||||||
docs: docs(),
|
docs: docs(),
|
||||||
test_coverage: [tool: ExCoveralls],
|
test_coverage: [tool: ExCoveralls],
|
||||||
preferred_cli_env: [
|
preferred_cli_env: [
|
||||||
|
|
|
||||||
1150
priv/openflow_enum_gen.exs
Normal file
1150
priv/openflow_enum_gen.exs
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -2,6 +2,54 @@ defmodule OfpEchoTest do
|
||||||
use ExUnit.Case
|
use ExUnit.Case
|
||||||
doctest Openflow
|
doctest Openflow
|
||||||
|
|
||||||
|
describe "Openflow.Echo.Request" do
|
||||||
|
test "with xid and data options" do
|
||||||
|
echo = Openflow.Echo.Request.new(xid: 1, data: "echo")
|
||||||
|
|
||||||
|
echo
|
||||||
|
|> Openflow.to_binary()
|
||||||
|
|> Openflow.read()
|
||||||
|
|> Kernel.elem(1)
|
||||||
|
|> Kernel.==(echo)
|
||||||
|
|> assert()
|
||||||
|
end
|
||||||
|
|
||||||
|
test "with data options" do
|
||||||
|
echo = Openflow.Echo.Request.new("echo")
|
||||||
|
|
||||||
|
echo
|
||||||
|
|> Openflow.to_binary()
|
||||||
|
|> Openflow.read()
|
||||||
|
|> Kernel.elem(1)
|
||||||
|
|> Kernel.==(echo)
|
||||||
|
|> assert()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "Openflow.Echo.Reply" do
|
||||||
|
test "with xid and data options" do
|
||||||
|
echo = Openflow.Echo.Reply.new(xid: 1, data: "echo")
|
||||||
|
|
||||||
|
echo
|
||||||
|
|> Openflow.to_binary()
|
||||||
|
|> Openflow.read()
|
||||||
|
|> Kernel.elem(1)
|
||||||
|
|> Kernel.==(echo)
|
||||||
|
|> assert()
|
||||||
|
end
|
||||||
|
|
||||||
|
test "with data options" do
|
||||||
|
echo = Openflow.Echo.Reply.new("echo")
|
||||||
|
|
||||||
|
echo
|
||||||
|
|> Openflow.to_binary()
|
||||||
|
|> Openflow.read()
|
||||||
|
|> Kernel.elem(1)
|
||||||
|
|> Kernel.==(echo)
|
||||||
|
|> assert()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "Openflow.read/1" do
|
describe "Openflow.read/1" do
|
||||||
test "with OFP_ECHO_REQUEST packet" do
|
test "with OFP_ECHO_REQUEST packet" do
|
||||||
{:ok, %Openflow.Echo.Request{} = echo, ""} =
|
{:ok, %Openflow.Echo.Request{} = echo, ""} =
|
||||||
|
|
@ -9,9 +57,11 @@ defmodule OfpEchoTest do
|
||||||
|> File.read!()
|
|> File.read!()
|
||||||
|> Openflow.read()
|
|> Openflow.read()
|
||||||
|
|
||||||
assert echo.version == 4
|
expect = Openflow.Echo.Request.new()
|
||||||
assert echo.xid == 0
|
|
||||||
assert echo.data == ""
|
assert echo.version == expect.version
|
||||||
|
assert echo.xid == expect.xid
|
||||||
|
assert echo.data == expect.data
|
||||||
end
|
end
|
||||||
|
|
||||||
test "with OFP_ECHO_REPLY packet" do
|
test "with OFP_ECHO_REPLY packet" do
|
||||||
|
|
@ -20,9 +70,11 @@ defmodule OfpEchoTest do
|
||||||
|> File.read!()
|
|> File.read!()
|
||||||
|> Openflow.read()
|
|> Openflow.read()
|
||||||
|
|
||||||
assert echo.version == 4
|
expect = Openflow.Echo.Reply.new()
|
||||||
assert echo.xid == 0
|
|
||||||
assert echo.data == ""
|
assert echo.version == expect.version
|
||||||
|
assert echo.xid == expect.xid
|
||||||
|
assert echo.data == expect.data
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,10 @@ defmodule OfpFeaturesTest do
|
||||||
|> File.read!()
|
|> File.read!()
|
||||||
|> Openflow.read()
|
|> Openflow.read()
|
||||||
|
|
||||||
assert features.version == 4
|
expect = Openflow.Features.Request.new(0)
|
||||||
assert features.xid == 0
|
|
||||||
|
assert features.version == expect.version
|
||||||
|
assert features.xid == expect.xid
|
||||||
end
|
end
|
||||||
|
|
||||||
test "with OFP_FEATURES_REPLY packet" do
|
test "with OFP_FEATURES_REPLY packet" do
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue