openflow/match: Refactored

This commit is contained in:
Eishun Kondoh 2019-07-09 11:58:23 +09:00
parent e65bf77a3c
commit 9ddd82fcab
27 changed files with 1201 additions and 1584 deletions

View file

@ -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{

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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

View file

@ -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,

View file

@ -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,

View file

@ -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,