openflow/match: Refactored
This commit is contained in:
parent
e65bf77a3c
commit
9ddd82fcab
27 changed files with 1201 additions and 1584 deletions
|
|
@ -53,7 +53,7 @@ defmodule Openflow.Action.NxBundleLoad do
|
|||
) :: t()
|
||||
def new(options \\ []) do
|
||||
dst_field = options[:dst_field] || raise "dst_field must be specified"
|
||||
default_n_bits = Openflow.Match.Field.n_bits_of(dst_field)
|
||||
default_n_bits = Openflow.Match.n_bits_of(dst_field)
|
||||
slaves = options[:slaves] || []
|
||||
|
||||
%NxBundleLoad{
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ defmodule Openflow.Action.NxFlowSpecLoad do
|
|||
def new(options) do
|
||||
dst = options[:dst] || raise(":dst must be specified")
|
||||
src = options[:src] || raise(":src must be specified")
|
||||
n_bits = options[:n_bits] || Openflow.Match.Field.n_bits_of(dst)
|
||||
n_bits = options[:n_bits] || Openflow.Match.n_bits_of(dst)
|
||||
|
||||
%NxFlowSpecLoad{
|
||||
src: src,
|
||||
|
|
@ -90,7 +90,7 @@ defmodule Openflow.Action.NxFlowSpecLoad do
|
|||
binary
|
||||
|
||||
dst = Openflow.Match.codec_header(dst_bin)
|
||||
src = Openflow.Match.Field.codec(src_bin, dst)
|
||||
src = Openflow.Match.decode_value(src_bin, dst)
|
||||
flow_spec = %NxFlowSpecLoad{src: src, dst: dst, n_bits: n_bits, dst_offset: dst_ofs}
|
||||
{flow_spec, rest}
|
||||
end
|
||||
|
|
@ -103,7 +103,7 @@ defmodule Openflow.Action.NxFlowSpecLoad do
|
|||
end
|
||||
|
||||
defp codec_src(%NxFlowSpecLoad{src: src, dst: dst_field}) do
|
||||
src_bin = Openflow.Match.Field.codec(src, dst_field)
|
||||
src_bin = Openflow.Match.encode_value(src, dst_field)
|
||||
{@learn_src_immediate, src_bin}
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ defmodule Openflow.Action.NxFlowSpecMatch do
|
|||
def new(options \\ []) do
|
||||
dst = options[:dst] || raise ":dst must be specified"
|
||||
src = options[:src] || raise ":src must be specified"
|
||||
n_bits = options[:n_bits] || Openflow.Match.Field.n_bits_of(dst)
|
||||
n_bits = options[:n_bits] || Openflow.Match.n_bits_of(dst)
|
||||
|
||||
%NxFlowSpecMatch{
|
||||
src: src,
|
||||
|
|
@ -92,7 +92,7 @@ defmodule Openflow.Action.NxFlowSpecMatch do
|
|||
binary
|
||||
|
||||
dst = Openflow.Match.codec_header(dst_bin)
|
||||
src = Openflow.Match.Field.codec(src_bin, dst)
|
||||
src = Openflow.Match.decode_value(src_bin, dst)
|
||||
flow_spec = %NxFlowSpecMatch{src: src, dst: dst, n_bits: n_bits, dst_offset: dst_ofs}
|
||||
{flow_spec, rest}
|
||||
end
|
||||
|
|
@ -105,7 +105,7 @@ defmodule Openflow.Action.NxFlowSpecMatch do
|
|||
end
|
||||
|
||||
defp codec_src(%NxFlowSpecMatch{src: src, dst: dst_field}) do
|
||||
src_bin = Openflow.Match.Field.codec(src, dst_field)
|
||||
src_bin = Openflow.Match.encode_value(src, dst_field)
|
||||
{@learn_src_immediate, src_bin}
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ defmodule Openflow.Action.NxFlowSpecOutput do
|
|||
@spec new(src: atom(), n_bits: non_neg_integer(), src_offset: non_neg_integer()) :: t()
|
||||
def new(options \\ []) do
|
||||
src = options[:src] || raise ":src must be specified"
|
||||
n_bits = options[:n_bits] || Openflow.Match.Field.n_bits_of(src)
|
||||
n_bits = options[:n_bits] || Openflow.Match.n_bits_of(src)
|
||||
%NxFlowSpecOutput{n_bits: n_bits, src: src, src_offset: options[:src_offset] || 0}
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ defmodule Openflow.Action.NxMultipath do
|
|||
@spec new(Keyword.t()) :: %NxMultipath{}
|
||||
def new(options) do
|
||||
dst_field = options[:dst_field] || raise "dst_field must be specified"
|
||||
default_n_bits = Openflow.Match.Field.n_bits_of(dst_field)
|
||||
default_n_bits = Openflow.Match.n_bits_of(dst_field)
|
||||
|
||||
%NxMultipath{
|
||||
hash_field: options[:hash_field] || :eth_src,
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ defmodule Openflow.Action.NxOutputReg do
|
|||
) :: t()
|
||||
def new(options) do
|
||||
src_field = options[:src_field] || raise "src_field must be specified"
|
||||
default_n_bits = Openflow.Match.Field.n_bits_of(src_field)
|
||||
default_n_bits = Openflow.Match.n_bits_of(src_field)
|
||||
|
||||
%NxOutputReg{
|
||||
n_bits: options[:n_bits] || default_n_bits,
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ defmodule Openflow.Action.NxOutputReg2 do
|
|||
) :: t()
|
||||
def new(options) do
|
||||
src_field = options[:src_field] || raise "src_field must be specified"
|
||||
default_n_bits = Openflow.Match.Field.n_bits_of(src_field)
|
||||
default_n_bits = Openflow.Match.n_bits_of(src_field)
|
||||
|
||||
%NxOutputReg2{
|
||||
n_bits: options[:n_bits] || default_n_bits,
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ defmodule Openflow.Action.NxRegLoad do
|
|||
def new(options \\ []) do
|
||||
dst_field = options[:dst_field] || raise "dst_field must be specified"
|
||||
value = options[:value] || raise "value must be specified"
|
||||
default_n_bits = Openflow.Match.Field.n_bits_of(dst_field)
|
||||
default_n_bits = Openflow.Match.n_bits_of(dst_field)
|
||||
|
||||
%NxRegLoad{
|
||||
n_bits: options[:n_bits] || default_n_bits,
|
||||
|
|
@ -61,7 +61,7 @@ defmodule Openflow.Action.NxRegLoad do
|
|||
|
||||
value_int =
|
||||
load.value
|
||||
|> Openflow.Match.Field.codec(load.dst_field)
|
||||
|> Openflow.Match.encode_value(load.dst_field)
|
||||
|> :binary.decode_unsigned(:big)
|
||||
|
||||
Experimenter.pack_exp_header(<<
|
||||
|
|
@ -76,7 +76,7 @@ defmodule Openflow.Action.NxRegLoad do
|
|||
def read(<<@experimenter::32, @nxast::16, body::bytes>>) do
|
||||
<<ofs::10, n_bits::6, dst_field_bin::4-bytes, value_bin::bytes>> = body
|
||||
dst_field = Openflow.Match.codec_header(dst_field_bin)
|
||||
value = Openflow.Match.Field.codec(value_bin, dst_field)
|
||||
value = Openflow.Match.decode_value(value_bin, dst_field)
|
||||
%NxRegLoad{n_bits: n_bits + 1, offset: ofs, dst_field: dst_field, value: value}
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ defmodule Openflow.Action.NxRegMove do
|
|||
def new(options \\ []) do
|
||||
src_field = options[:src_field] || raise "src_field must be specified"
|
||||
dst_field = options[:dst_field] || raise "dst_field must be specified"
|
||||
default_n_bits = Openflow.Match.Field.n_bits_of(dst_field)
|
||||
default_n_bits = Openflow.Match.n_bits_of(dst_field)
|
||||
|
||||
%NxRegMove{
|
||||
n_bits: options[:n_bits] || default_n_bits,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ defmodule Openflow.Action.NxStackPop do
|
|||
|
||||
def new(options) do
|
||||
field = options[:field] || raise "field must be specified"
|
||||
default_n_bits = Openflow.Match.Field.n_bits_of(field)
|
||||
default_n_bits = Openflow.Match.n_bits_of(field)
|
||||
|
||||
%NxStackPop{
|
||||
n_bits: options[:n_bits] || default_n_bits,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ defmodule Openflow.Action.NxStackPush do
|
|||
|
||||
def new(options) do
|
||||
field = options[:field] || raise "field must be specified"
|
||||
default_n_bits = Openflow.Match.Field.n_bits_of(field)
|
||||
default_n_bits = Openflow.Match.n_bits_of(field)
|
||||
|
||||
%NxStackPush{
|
||||
n_bits: options[:n_bits] || default_n_bits,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue