openflow: Add bundle support
This commit is contained in:
parent
db68e81954
commit
283f487c6b
4 changed files with 227 additions and 1 deletions
22
lib/openflow/bundle/add.ex
Normal file
22
lib/openflow/bundle/add.ex
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
defmodule Openflow.Bundle.Add do
|
||||||
|
defstruct(
|
||||||
|
version: 4,
|
||||||
|
xid: 0,
|
||||||
|
datapath_id: "",
|
||||||
|
aux_id: 0,
|
||||||
|
# bundle header
|
||||||
|
bundle_id: 0,
|
||||||
|
flags: [],
|
||||||
|
message: nil,
|
||||||
|
)
|
||||||
|
|
||||||
|
alias __MODULE__
|
||||||
|
|
||||||
|
# ONF Experimenter
|
||||||
|
@experimenter 0x4F4E4600
|
||||||
|
# BUNDLE_ADD
|
||||||
|
@onf_type 2301
|
||||||
|
|
||||||
|
# experimenter
|
||||||
|
def ofp_type, do: 4
|
||||||
|
end
|
||||||
|
|
@ -990,6 +990,20 @@ defmodule Openflow.EnumGen do
|
||||||
apply_setfield_miss: 15,
|
apply_setfield_miss: 15,
|
||||||
experimenter: 0xFFFE,
|
experimenter: 0xFFFE,
|
||||||
experimenter_miss: 0xFFFF
|
experimenter_miss: 0xFFFF
|
||||||
|
],
|
||||||
|
bundle_ctrl_type: [
|
||||||
|
open_request: 0,
|
||||||
|
open_reply: 1,
|
||||||
|
close_request: 2,
|
||||||
|
close_reply: 3,
|
||||||
|
commit_request: 4,
|
||||||
|
commit_reply: 5,
|
||||||
|
discard_request: 6,
|
||||||
|
discard_reply: 7
|
||||||
|
],
|
||||||
|
bundle_flags: [
|
||||||
|
atomic: 1 <<< 0,
|
||||||
|
ordered: 1 <<< 1
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5101,6 +5101,74 @@ defmodule Openflow.Enums do
|
||||||
throw(:bad_enum)
|
throw(:bad_enum)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def to_int(:open_request, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_int(:open_request)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :open_request
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(:open_reply, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_int(:open_reply)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :open_reply
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(:close_request, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_int(:close_request)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :close_request
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(:close_reply, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_int(:close_reply)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :close_reply
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(:commit_request, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_int(:commit_request)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :commit_request
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(:commit_reply, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_int(:commit_reply)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :commit_reply
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(:discard_request, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_int(:discard_request)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :discard_request
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(:discard_reply, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_int(:discard_reply)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :discard_reply
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(_int, :bundle_ctrl_type) do
|
||||||
|
throw(:bad_enum)
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(:atomic, :bundle_flags) do
|
||||||
|
bundle_flags_to_int(:atomic)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :atomic
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(:ordered, :bundle_flags) do
|
||||||
|
bundle_flags_to_int(:ordered)
|
||||||
|
catch
|
||||||
|
_class, _reason -> :ordered
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_int(_int, :bundle_flags) do
|
||||||
|
throw(:bad_enum)
|
||||||
|
end
|
||||||
|
|
||||||
def to_atom(0x0, :openflow_codec) do
|
def to_atom(0x0, :openflow_codec) do
|
||||||
openflow_codec_to_atom(0x0)
|
openflow_codec_to_atom(0x0)
|
||||||
catch
|
catch
|
||||||
|
|
@ -10201,6 +10269,74 @@ defmodule Openflow.Enums do
|
||||||
throw(:bad_enum)
|
throw(:bad_enum)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def to_atom(0x0, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_atom(0x0)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 0
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(0x1, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_atom(0x1)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 1
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(0x2, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_atom(0x2)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 2
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(0x3, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_atom(0x3)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 3
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(0x4, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_atom(0x4)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 4
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(0x5, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_atom(0x5)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 5
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(0x6, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_atom(0x6)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 6
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(0x7, :bundle_ctrl_type) do
|
||||||
|
bundle_ctrl_type_to_atom(0x7)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 7
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(_, :bundle_ctrl_type) do
|
||||||
|
throw(:bad_enum)
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(0x1, :bundle_flags) do
|
||||||
|
bundle_flags_to_atom(0x1)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 1
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(0x2, :bundle_flags) do
|
||||||
|
bundle_flags_to_atom(0x2)
|
||||||
|
catch
|
||||||
|
_class, _reason -> 2
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_atom(_, :bundle_flags) do
|
||||||
|
throw(:bad_enum)
|
||||||
|
end
|
||||||
|
|
||||||
def openflow_codec_to_int(Openflow.Hello), do: 0x0
|
def openflow_codec_to_int(Openflow.Hello), do: 0x0
|
||||||
def openflow_codec_to_int(Openflow.ErrorMsg), do: 0x1
|
def openflow_codec_to_int(Openflow.ErrorMsg), do: 0x1
|
||||||
def openflow_codec_to_int(Openflow.Echo.Request), do: 0x2
|
def openflow_codec_to_int(Openflow.Echo.Request), do: 0x2
|
||||||
|
|
@ -11961,6 +12097,30 @@ defmodule Openflow.Enums do
|
||||||
def table_feature_prop_type_to_atom(0xFFFE), do: :experimenter
|
def table_feature_prop_type_to_atom(0xFFFE), do: :experimenter
|
||||||
def table_feature_prop_type_to_atom(0xFFFF), do: :experimenter_miss
|
def table_feature_prop_type_to_atom(0xFFFF), do: :experimenter_miss
|
||||||
def table_feature_prop_type_to_atom(_), do: throw(:bad_enum)
|
def table_feature_prop_type_to_atom(_), do: throw(:bad_enum)
|
||||||
|
def bundle_ctrl_type_to_int(:open_request), do: 0x0
|
||||||
|
def bundle_ctrl_type_to_int(:open_reply), do: 0x1
|
||||||
|
def bundle_ctrl_type_to_int(:close_request), do: 0x2
|
||||||
|
def bundle_ctrl_type_to_int(:close_reply), do: 0x3
|
||||||
|
def bundle_ctrl_type_to_int(:commit_request), do: 0x4
|
||||||
|
def bundle_ctrl_type_to_int(:commit_reply), do: 0x5
|
||||||
|
def bundle_ctrl_type_to_int(:discard_request), do: 0x6
|
||||||
|
def bundle_ctrl_type_to_int(:discard_reply), do: 0x7
|
||||||
|
def bundle_ctrl_type_to_int(_), do: throw(:bad_enum)
|
||||||
|
def bundle_ctrl_type_to_atom(0x0), do: :open_request
|
||||||
|
def bundle_ctrl_type_to_atom(0x1), do: :open_reply
|
||||||
|
def bundle_ctrl_type_to_atom(0x2), do: :close_request
|
||||||
|
def bundle_ctrl_type_to_atom(0x3), do: :close_reply
|
||||||
|
def bundle_ctrl_type_to_atom(0x4), do: :commit_request
|
||||||
|
def bundle_ctrl_type_to_atom(0x5), do: :commit_reply
|
||||||
|
def bundle_ctrl_type_to_atom(0x6), do: :discard_request
|
||||||
|
def bundle_ctrl_type_to_atom(0x7), do: :discard_reply
|
||||||
|
def bundle_ctrl_type_to_atom(_), do: throw(:bad_enum)
|
||||||
|
def bundle_flags_to_int(:atomic), do: 0x1
|
||||||
|
def bundle_flags_to_int(:ordered), do: 0x2
|
||||||
|
def bundle_flags_to_int(_), do: throw(:bad_enum)
|
||||||
|
def bundle_flags_to_atom(0x1), do: :atomic
|
||||||
|
def bundle_flags_to_atom(0x2), do: :ordered
|
||||||
|
def bundle_flags_to_atom(_), do: throw(:bad_enum)
|
||||||
|
|
||||||
def int_to_flags(int, :openflow_codec) do
|
def int_to_flags(int, :openflow_codec) do
|
||||||
Openflow.Utils.int_to_flags([], int, enum_of(:openflow_codec))
|
Openflow.Utils.int_to_flags([], int, enum_of(:openflow_codec))
|
||||||
|
|
@ -12322,6 +12482,14 @@ defmodule Openflow.Enums do
|
||||||
Openflow.Utils.int_to_flags([], int, enum_of(:table_feature_prop_type))
|
Openflow.Utils.int_to_flags([], int, enum_of(:table_feature_prop_type))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def int_to_flags(int, :bundle_ctrl_type) do
|
||||||
|
Openflow.Utils.int_to_flags([], int, enum_of(:bundle_ctrl_type))
|
||||||
|
end
|
||||||
|
|
||||||
|
def int_to_flags(int, :bundle_flags) do
|
||||||
|
Openflow.Utils.int_to_flags([], int, enum_of(:bundle_flags))
|
||||||
|
end
|
||||||
|
|
||||||
def flags_to_int(flags, :openflow_codec) do
|
def flags_to_int(flags, :openflow_codec) do
|
||||||
Openflow.Utils.flags_to_int(0, flags, enum_of(:openflow_codec))
|
Openflow.Utils.flags_to_int(0, flags, enum_of(:openflow_codec))
|
||||||
end
|
end
|
||||||
|
|
@ -12682,6 +12850,14 @@ defmodule Openflow.Enums do
|
||||||
Openflow.Utils.flags_to_int(0, flags, enum_of(:table_feature_prop_type))
|
Openflow.Utils.flags_to_int(0, flags, enum_of(:table_feature_prop_type))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def flags_to_int(flags, :bundle_ctrl_type) do
|
||||||
|
Openflow.Utils.flags_to_int(0, flags, enum_of(:bundle_ctrl_type))
|
||||||
|
end
|
||||||
|
|
||||||
|
def flags_to_int(flags, :bundle_flags) do
|
||||||
|
Openflow.Utils.flags_to_int(0, flags, enum_of(:bundle_flags))
|
||||||
|
end
|
||||||
|
|
||||||
defp enum_of(:openflow_codec),
|
defp enum_of(:openflow_codec),
|
||||||
do: [
|
do: [
|
||||||
{Openflow.Hello, 0},
|
{Openflow.Hello, 0},
|
||||||
|
|
@ -13555,4 +13731,18 @@ defmodule Openflow.Enums do
|
||||||
experimenter: 65534,
|
experimenter: 65534,
|
||||||
experimenter_miss: 65535
|
experimenter_miss: 65535
|
||||||
]
|
]
|
||||||
|
|
||||||
|
defp enum_of(:bundle_ctrl_type),
|
||||||
|
do: [
|
||||||
|
open_request: 0,
|
||||||
|
open_reply: 1,
|
||||||
|
close_request: 2,
|
||||||
|
close_reply: 3,
|
||||||
|
commit_request: 4,
|
||||||
|
commit_reply: 5,
|
||||||
|
discard_request: 6,
|
||||||
|
discard_reply: 7
|
||||||
|
]
|
||||||
|
|
||||||
|
defp enum_of(:bundle_flags), do: [atomic: 1, ordered: 2]
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ defmodule Tres.SecureChannelState do
|
||||||
|
|
||||||
@spec get_transaction_id(:counters.counters_ref()) :: integer()
|
@spec get_transaction_id(:counters.counters_ref()) :: integer()
|
||||||
def get_transaction_id(counter_ref) do
|
def get_transaction_id(counter_ref) do
|
||||||
:counters.get(counter_ref, 1) &&& 0xffffffff
|
:counters.get(counter_ref, 1) &&& 0xFFFFFFFF
|
||||||
end
|
end
|
||||||
|
|
||||||
# private functions
|
# private functions
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue