exception
Unparsable of string
Unparsable msg
signals an error in parsing, such as when a bit sequence
has been corrupted.
exception
Ignored of string
Ignored msg
signals the arrival of a valid OpenFlow message that the
parser is not yet equipped to handle.
type pattern
=
{
dlSrc : Packet.dlAddr option; |
dlDst : Packet.dlAddr option; |
dlTyp : Packet.dlTyp option; |
dlVlan : Packet.dlVlan option; |
dlVlanPcp : Packet.dlVlanPcp option; |
nwSrc : Packet.nwAddr mask option; |
nwDst : Packet.nwAddr mask option; |
nwProto : Packet.nwProto option; |
nwTos : Packet.nwTos option; |
tpSrc : Packet.tpPort option; |
tpDst : Packet.tpPort option; |
inPort : portId option; |
}
type pseudoPort
=
| PhysicalPort of portId |
| InPort |
| Table |
| Normal |
| Flood |
| AllPorts |
| Controller of int |
| Local |
include sig ... end
val pseudoPort_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> pseudoPort
val sexp_of_pseudoPort : pseudoPort ‑> Ppx_sexp_conv_lib.Sexp.t
type action
=
| Output of pseudoPort |
| SetDlVlan of Packet.dlVlan |
| SetDlVlanPcp of Packet.dlVlanPcp |
| SetDlSrc of Packet.dlAddr |
| SetDlDst of Packet.dlAddr |
| SetNwSrc of Packet.nwAddr |
| SetNwDst of Packet.nwAddr |
| SetNwTos of Packet.nwTos |
| SetTpSrc of Packet.tpPort |
| SetTpDst of Packet.tpPort |
| Enqueue of pseudoPort * queueId |
include sig ... end
val flowModCommand_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> flowModCommand
val sexp_of_flowModCommand : flowModCommand ‑> Ppx_sexp_conv_lib.Sexp.t
type flowMod
=
{
command : flowModCommand; |
pattern : pattern; |
priority : Packet.int16; |
actions : action list; |
cookie : int64; |
idle_timeout : timeout; |
hard_timeout : timeout; |
notify_when_removed : bool; |
apply_to_packet : int32 option; |
out_port : pseudoPort option; |
check_overlap : bool; |
}
include sig ... end
val packetInReason_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> packetInReason
val sexp_of_packetInReason : packetInReason ‑> Ppx_sexp_conv_lib.Sexp.t
type packetIn
=
{
input_payload : payload; |
total_len : Packet.int16; |
port : portId; |
reason : packetInReason; |
}
include sig ... end
val flowRemovedReason_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> flowRemovedReason
val sexp_of_flowRemovedReason : flowRemovedReason ‑> Ppx_sexp_conv_lib.Sexp.t
type flowRemoved
=
{
pattern : pattern; |
cookie : int64; |
priority : Packet.int16; |
reason : flowRemovedReason; |
duration_sec : int32; |
duration_nsec : int32; |
idle_timeout : timeout; |
packet_count : int64; |
byte_count : int64; |
}
include sig ... end
val flowRemoved_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> flowRemoved
val sexp_of_flowRemoved : flowRemoved ‑> Ppx_sexp_conv_lib.Sexp.t
type request
=
| DescriptionRequest |
| FlowTableStatsRequest |
| IndividualRequest of statsReq |
| AggregateRequest of statsReq |
| PortRequest of pseudoPort option |
include sig ... end
val descriptionStats_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> descriptionStats
val sexp_of_descriptionStats : descriptionStats ‑> Ppx_sexp_conv_lib.Sexp.t
type individualStats
=
{
table_id : Packet.int8; |
of_match : pattern; |
duration_sec : int32; |
duration_nsec : int32; |
priority : Packet.int16; |
idle_timeout : Packet.int16; |
hard_timeout : Packet.int16; |
cookie : int64; |
packet_count : int64; |
byte_count : int64; |
actions : action list; |
}
include sig ... end
val individualStats_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> individualStats
val sexp_of_individualStats : individualStats ‑> Ppx_sexp_conv_lib.Sexp.t
include sig ... end
val aggregateStats_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> aggregateStats
val sexp_of_aggregateStats : aggregateStats ‑> Ppx_sexp_conv_lib.Sexp.t
type portStats
=
{
port_no : Packet.int16; |
rx_packets : int64; |
tx_packets : int64; |
rx_bytes : int64; |
tx_bytes : int64; |
rx_dropped : int64; |
tx_dropped : int64; |
rx_errors : int64; |
tx_errors : int64; |
rx_frame_err : int64; |
rx_over_err : int64; |
rx_crc_err : int64; |
collisions : int64; |
}
type reply
=
| DescriptionRep of descriptionStats |
| IndividualFlowRep of individualStats list |
| AggregateFlowRep of aggregateStats |
| PortRep of portStats list |
include sig ... end
val portConfig_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> portConfig
val sexp_of_portConfig : portConfig ‑> Ppx_sexp_conv_lib.Sexp.t
include sig ... end
val portFeatures_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> portFeatures
val sexp_of_portFeatures : portFeatures ‑> Ppx_sexp_conv_lib.Sexp.t
type portDescription
=
{
port_no : portId; |
hw_addr : Packet.dlAddr; |
name : string; |
config : portConfig; |
state : portState; |
curr : portFeatures; |
advertised : portFeatures; |
supported : portFeatures; |
peer : portFeatures; |
}
include sig ... end
val portDescription_of_sexp : Ppx_sexp_conv_lib.Sexp.t ‑> portDescription
val sexp_of_portDescription : portDescription ‑> Ppx_sexp_conv_lib.Sexp.t
module Wildcards : sig ... end
module Match : sig ... end
module PseudoPort : sig ... end
module Timeout : sig ... end
module Action : sig ... end
module FlowMod : sig ... end
module FlowRemoved : sig ... end
module PacketOut : sig ... end
module PortDescription : sig ... end
module PortStatus : sig ... end
module SwitchFeatures : sig ... end
Switch features data structure. See Section 5.3.1 of the OpenFlow 1.0 specification.
module SwitchConfig : sig ... end
module StatsRequest : sig ... end
module StatsReply : sig ... end
module Message : sig ... end
A subset of the OpenFlow 1.0 messages defined in Section 5.1 of the specification.
In general, each submodule contains pretty-printing functions for the types defined therein. This section defines pretty printers for top-level types.
These exceptions may occur when parsing OpenFlow messages.
val parse_payload : payload ‑> Packet.packet
val marshal_payload : int32 option ‑> Packet.packet ‑> payload
marshal_payload buf pkt
serializes pkt, where buf
is an optional
buffer ID.
val add_flow : Packet.int16 ‑> pattern ‑> ?idle_to:timeout ‑> ?notify_removed:bool ‑> action list ‑> flowMod
add_flow priority pattern action_sequence
creates a
FlowMod.t
instruction that adds a new flow table entry with
the specified priority
, pattern
, and action_sequence
.
The entry is permanent (i.e., does not timeout), its cookie is zero, etc.
val delete_flow_strict : Packet.int16 ‑> pattern ‑> pseudoPort option ‑> flowMod
val delete_all_flows : flowMod
val packetIn_to_string : packetIn ‑> string
val reply_to_string : reply ‑> string