Copy docs into Zeek repo directly

This is based on commit 2731def9159247e6da8a3191783c89683363689c from the
zeek-docs repo.
This commit is contained in:
Tim Wojtulewicz 2025-09-15 15:52:18 -07:00
parent 83f1e74643
commit ded98cd373
1074 changed files with 169319 additions and 0 deletions

View file

@ -0,0 +1,14 @@
:tocdepth: 3
base/frameworks/openflow/__load__.zeek
======================================
:Imports: :doc:`base/frameworks/cluster </scripts/base/frameworks/cluster/index>`, :doc:`base/frameworks/openflow/consts.zeek </scripts/base/frameworks/openflow/consts.zeek>`, :doc:`base/frameworks/openflow/main.zeek </scripts/base/frameworks/openflow/main.zeek>`, :doc:`base/frameworks/openflow/non-cluster.zeek </scripts/base/frameworks/openflow/non-cluster.zeek>`, :doc:`base/frameworks/openflow/plugins </scripts/base/frameworks/openflow/plugins/index>`, :doc:`base/frameworks/openflow/types.zeek </scripts/base/frameworks/openflow/types.zeek>`
Summary
~~~~~~~
Detailed Interface
~~~~~~~~~~~~~~~~~~

View file

@ -0,0 +1,623 @@
:tocdepth: 3
base/frameworks/openflow/consts.zeek
====================================
.. zeek:namespace:: OpenFlow
Constants used by the OpenFlow framework.
:Namespace: OpenFlow
Summary
~~~~~~~
Constants
#########
=============================================================== ======================================================================
:zeek:id:`OpenFlow::ETH_APPLETALK`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_APPLETALK_ARP`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_ARP`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_EAP_OVER_LAN`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_ETHER_FLOW_CONTROL`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_IPX`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_IPX_OLD`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_IPv4`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_IPv6`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_JUMBO_FRAMES`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_MAC_SECURITY`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_MPLS_MULTICAST`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_MPLS_UNICAST`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_PPPOE_DISCOVERY`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_PPPOE_SESSION`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_PROVIDER_BRIDING`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_QINQ`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_RARP`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_VLAN`: :zeek:type:`count`
:zeek:id:`OpenFlow::ETH_WOL`: :zeek:type:`count`
:zeek:id:`OpenFlow::INVALID_COOKIE`: :zeek:type:`count` Return value for a cookie from a flow
which is not added, modified or deleted
from the Zeek openflow framework.
:zeek:id:`OpenFlow::IP_CBT`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_EGP`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_ETHERIP`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_FC`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_GGP`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_GRE`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_HOPOPT`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_ICMP`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_IGMP`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_IGP`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_IPIP`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_IPv6`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_ISIS`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_L2TP`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_MPLS`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_MTP`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_OSPF`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_RDP`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_RSVP`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_ST`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_TCP`: :zeek:type:`count`
:zeek:id:`OpenFlow::IP_UDP`: :zeek:type:`count`
:zeek:id:`OpenFlow::OFPFF_CHECK_OVERLAP`: :zeek:type:`count` Check for overlapping entries first.
:zeek:id:`OpenFlow::OFPFF_EMERG`: :zeek:type:`count` Remark this is for emergency.
:zeek:id:`OpenFlow::OFPFF_SEND_FLOW_REM`: :zeek:type:`count` Send flow removed message when flow
expires or is deleted.
:zeek:id:`OpenFlow::OFPP_ALL`: :zeek:type:`count` All physical ports except input port.
:zeek:id:`OpenFlow::OFPP_ANY`: :zeek:type:`count` Wildcard port used only for flow mod (delete) and flow stats requests.
:zeek:id:`OpenFlow::OFPP_CONTROLLER`: :zeek:type:`count` Send to controller.
:zeek:id:`OpenFlow::OFPP_FLOOD`: :zeek:type:`count` All physical ports except input port and
those disabled by STP.
:zeek:id:`OpenFlow::OFPP_IN_PORT`: :zeek:type:`count` Send the packet out the input port.
:zeek:id:`OpenFlow::OFPP_LOCAL`: :zeek:type:`count` Local openflow "port".
:zeek:id:`OpenFlow::OFPP_NORMAL`: :zeek:type:`count` Process with normal L2/L3 switching.
:zeek:id:`OpenFlow::OFPP_TABLE`: :zeek:type:`count` Perform actions in flow table.
:zeek:id:`OpenFlow::OFPTT_ALL`: :zeek:type:`count`
:zeek:id:`OpenFlow::OFP_NO_BUFFER`: :zeek:type:`count`
=============================================================== ======================================================================
Types
#####
============================================================== ======================================
:zeek:type:`OpenFlow::ofp_action_type`: :zeek:type:`enum` Openflow action_type definitions.
:zeek:type:`OpenFlow::ofp_config_flags`: :zeek:type:`enum` Openflow config flag definitions.
:zeek:type:`OpenFlow::ofp_flow_mod_command`: :zeek:type:`enum` Openflow flow_mod_command definitions.
============================================================== ======================================
Detailed Interface
~~~~~~~~~~~~~~~~~~
Constants
#########
.. zeek:id:: OpenFlow::ETH_APPLETALK
:source-code: base/frameworks/openflow/consts.zeek 38 38
:Type: :zeek:type:`count`
:Default: ``32923``
.. zeek:id:: OpenFlow::ETH_APPLETALK_ARP
:source-code: base/frameworks/openflow/consts.zeek 40 40
:Type: :zeek:type:`count`
:Default: ``33011``
.. zeek:id:: OpenFlow::ETH_ARP
:source-code: base/frameworks/openflow/consts.zeek 32 32
:Type: :zeek:type:`count`
:Default: ``2054``
.. zeek:id:: OpenFlow::ETH_EAP_OVER_LAN
:source-code: base/frameworks/openflow/consts.zeek 62 62
:Type: :zeek:type:`count`
:Default: ``34958``
.. zeek:id:: OpenFlow::ETH_ETHER_FLOW_CONTROL
:source-code: base/frameworks/openflow/consts.zeek 50 50
:Type: :zeek:type:`count`
:Default: ``34824``
.. zeek:id:: OpenFlow::ETH_IPX
:source-code: base/frameworks/openflow/consts.zeek 46 46
:Type: :zeek:type:`count`
:Default: ``33080``
.. zeek:id:: OpenFlow::ETH_IPX_OLD
:source-code: base/frameworks/openflow/consts.zeek 44 44
:Type: :zeek:type:`count`
:Default: ``33079``
.. zeek:id:: OpenFlow::ETH_IPv4
:source-code: base/frameworks/openflow/consts.zeek 30 30
:Type: :zeek:type:`count`
:Default: ``2048``
.. zeek:id:: OpenFlow::ETH_IPv6
:source-code: base/frameworks/openflow/consts.zeek 48 48
:Type: :zeek:type:`count`
:Default: ``34525``
.. zeek:id:: OpenFlow::ETH_JUMBO_FRAMES
:source-code: base/frameworks/openflow/consts.zeek 60 60
:Type: :zeek:type:`count`
:Default: ``34928``
.. zeek:id:: OpenFlow::ETH_MAC_SECURITY
:source-code: base/frameworks/openflow/consts.zeek 66 66
:Type: :zeek:type:`count`
:Default: ``35045``
.. zeek:id:: OpenFlow::ETH_MPLS_MULTICAST
:source-code: base/frameworks/openflow/consts.zeek 54 54
:Type: :zeek:type:`count`
:Default: ``34888``
.. zeek:id:: OpenFlow::ETH_MPLS_UNICAST
:source-code: base/frameworks/openflow/consts.zeek 52 52
:Type: :zeek:type:`count`
:Default: ``34887``
.. zeek:id:: OpenFlow::ETH_PPPOE_DISCOVERY
:source-code: base/frameworks/openflow/consts.zeek 56 56
:Type: :zeek:type:`count`
:Default: ``34915``
.. zeek:id:: OpenFlow::ETH_PPPOE_SESSION
:source-code: base/frameworks/openflow/consts.zeek 58 58
:Type: :zeek:type:`count`
:Default: ``34916``
.. zeek:id:: OpenFlow::ETH_PROVIDER_BRIDING
:source-code: base/frameworks/openflow/consts.zeek 64 64
:Type: :zeek:type:`count`
:Default: ``34984``
.. zeek:id:: OpenFlow::ETH_QINQ
:source-code: base/frameworks/openflow/consts.zeek 68 68
:Type: :zeek:type:`count`
:Default: ``37120``
.. zeek:id:: OpenFlow::ETH_RARP
:source-code: base/frameworks/openflow/consts.zeek 36 36
:Type: :zeek:type:`count`
:Default: ``32821``
.. zeek:id:: OpenFlow::ETH_VLAN
:source-code: base/frameworks/openflow/consts.zeek 42 42
:Type: :zeek:type:`count`
:Default: ``33024``
.. zeek:id:: OpenFlow::ETH_WOL
:source-code: base/frameworks/openflow/consts.zeek 34 34
:Type: :zeek:type:`count`
:Default: ``2114``
.. zeek:id:: OpenFlow::INVALID_COOKIE
:source-code: base/frameworks/openflow/consts.zeek 126 126
:Type: :zeek:type:`count`
:Default: ``9223372036854775807``
Return value for a cookie from a flow
which is not added, modified or deleted
from the Zeek openflow framework.
.. zeek:id:: OpenFlow::IP_CBT
:source-code: base/frameworks/openflow/consts.zeek 89 89
:Type: :zeek:type:`count`
:Default: ``7``
.. zeek:id:: OpenFlow::IP_EGP
:source-code: base/frameworks/openflow/consts.zeek 91 91
:Type: :zeek:type:`count`
:Default: ``8``
.. zeek:id:: OpenFlow::IP_ETHERIP
:source-code: base/frameworks/openflow/consts.zeek 112 112
:Type: :zeek:type:`count`
:Default: ``97``
.. zeek:id:: OpenFlow::IP_FC
:source-code: base/frameworks/openflow/consts.zeek 118 118
:Type: :zeek:type:`count`
:Default: ``133``
.. zeek:id:: OpenFlow::IP_GGP
:source-code: base/frameworks/openflow/consts.zeek 81 81
:Type: :zeek:type:`count`
:Default: ``3``
.. zeek:id:: OpenFlow::IP_GRE
:source-code: base/frameworks/openflow/consts.zeek 104 104
:Type: :zeek:type:`count`
:Default: ``47``
.. zeek:id:: OpenFlow::IP_HOPOPT
:source-code: base/frameworks/openflow/consts.zeek 75 75
:Type: :zeek:type:`count`
:Default: ``0``
.. zeek:id:: OpenFlow::IP_ICMP
:source-code: base/frameworks/openflow/consts.zeek 77 77
:Type: :zeek:type:`count`
:Default: ``1``
.. zeek:id:: OpenFlow::IP_IGMP
:source-code: base/frameworks/openflow/consts.zeek 79 79
:Type: :zeek:type:`count`
:Default: ``2``
.. zeek:id:: OpenFlow::IP_IGP
:source-code: base/frameworks/openflow/consts.zeek 94 94
:Type: :zeek:type:`count`
:Default: ``9``
.. zeek:id:: OpenFlow::IP_IPIP
:source-code: base/frameworks/openflow/consts.zeek 83 83
:Type: :zeek:type:`count`
:Default: ``4``
.. zeek:id:: OpenFlow::IP_IPv6
:source-code: base/frameworks/openflow/consts.zeek 100 100
:Type: :zeek:type:`count`
:Default: ``41``
.. zeek:id:: OpenFlow::IP_ISIS
:source-code: base/frameworks/openflow/consts.zeek 116 116
:Type: :zeek:type:`count`
:Default: ``124``
.. zeek:id:: OpenFlow::IP_L2TP
:source-code: base/frameworks/openflow/consts.zeek 114 114
:Type: :zeek:type:`count`
:Default: ``115``
.. zeek:id:: OpenFlow::IP_MPLS
:source-code: base/frameworks/openflow/consts.zeek 120 120
:Type: :zeek:type:`count`
:Default: ``137``
.. zeek:id:: OpenFlow::IP_MTP
:source-code: base/frameworks/openflow/consts.zeek 108 108
:Type: :zeek:type:`count`
:Default: ``92``
.. zeek:id:: OpenFlow::IP_OSPF
:source-code: base/frameworks/openflow/consts.zeek 106 106
:Type: :zeek:type:`count`
:Default: ``89``
.. zeek:id:: OpenFlow::IP_RDP
:source-code: base/frameworks/openflow/consts.zeek 98 98
:Type: :zeek:type:`count`
:Default: ``27``
.. zeek:id:: OpenFlow::IP_RSVP
:source-code: base/frameworks/openflow/consts.zeek 102 102
:Type: :zeek:type:`count`
:Default: ``46``
.. zeek:id:: OpenFlow::IP_ST
:source-code: base/frameworks/openflow/consts.zeek 85 85
:Type: :zeek:type:`count`
:Default: ``5``
.. zeek:id:: OpenFlow::IP_TCP
:source-code: base/frameworks/openflow/consts.zeek 87 87
:Type: :zeek:type:`count`
:Default: ``6``
.. zeek:id:: OpenFlow::IP_UDP
:source-code: base/frameworks/openflow/consts.zeek 96 96
:Type: :zeek:type:`count`
:Default: ``17``
.. zeek:id:: OpenFlow::OFPFF_CHECK_OVERLAP
:source-code: base/frameworks/openflow/consts.zeek 155 155
:Type: :zeek:type:`count`
:Default: ``2``
Check for overlapping entries first.
.. zeek:id:: OpenFlow::OFPFF_EMERG
:source-code: base/frameworks/openflow/consts.zeek 159 159
:Type: :zeek:type:`count`
:Default: ``4``
Remark this is for emergency.
Flows added with this are only used
when the controller is disconnected.
.. zeek:id:: OpenFlow::OFPFF_SEND_FLOW_REM
:source-code: base/frameworks/openflow/consts.zeek 153 153
:Type: :zeek:type:`count`
:Default: ``1``
Send flow removed message when flow
expires or is deleted.
.. zeek:id:: OpenFlow::OFPP_ALL
:source-code: base/frameworks/openflow/consts.zeek 142 142
:Type: :zeek:type:`count`
:Default: ``4294967292``
All physical ports except input port.
.. zeek:id:: OpenFlow::OFPP_ANY
:source-code: base/frameworks/openflow/consts.zeek 148 148
:Type: :zeek:type:`count`
:Default: ``4294967295``
Wildcard port used only for flow mod (delete) and flow stats requests.
.. zeek:id:: OpenFlow::OFPP_CONTROLLER
:source-code: base/frameworks/openflow/consts.zeek 144 144
:Type: :zeek:type:`count`
:Default: ``4294967293``
Send to controller.
.. zeek:id:: OpenFlow::OFPP_FLOOD
:source-code: base/frameworks/openflow/consts.zeek 140 140
:Type: :zeek:type:`count`
:Default: ``4294967291``
All physical ports except input port and
those disabled by STP.
.. zeek:id:: OpenFlow::OFPP_IN_PORT
:source-code: base/frameworks/openflow/consts.zeek 131 131
:Type: :zeek:type:`count`
:Default: ``4294967288``
Send the packet out the input port. This
virtual port must be explicitly used in
order to send back out of the input port.
.. zeek:id:: OpenFlow::OFPP_LOCAL
:source-code: base/frameworks/openflow/consts.zeek 146 146
:Type: :zeek:type:`count`
:Default: ``4294967294``
Local openflow "port".
.. zeek:id:: OpenFlow::OFPP_NORMAL
:source-code: base/frameworks/openflow/consts.zeek 137 137
:Type: :zeek:type:`count`
:Default: ``4294967290``
Process with normal L2/L3 switching.
.. zeek:id:: OpenFlow::OFPP_TABLE
:source-code: base/frameworks/openflow/consts.zeek 135 135
:Type: :zeek:type:`count`
:Default: ``4294967289``
Perform actions in flow table.
NB: This can only be the destination port
for packet-out messages.
.. zeek:id:: OpenFlow::OFPTT_ALL
:source-code: base/frameworks/openflow/consts.zeek 163 163
:Type: :zeek:type:`count`
:Default: ``255``
.. zeek:id:: OpenFlow::OFP_NO_BUFFER
:source-code: base/frameworks/openflow/consts.zeek 150 150
:Type: :zeek:type:`count`
:Default: ``4294967295``
Types
#####
.. zeek:type:: OpenFlow::ofp_action_type
:source-code: base/frameworks/openflow/consts.zeek 170 198
:Type: :zeek:type:`enum`
.. zeek:enum:: OpenFlow::OFPAT_OUTPUT OpenFlow::ofp_action_type
Output to switch port.
.. zeek:enum:: OpenFlow::OFPAT_SET_VLAN_VID OpenFlow::ofp_action_type
Set the 802.1q VLAN id.
.. zeek:enum:: OpenFlow::OFPAT_SET_VLAN_PCP OpenFlow::ofp_action_type
Set the 802.1q priority.
.. zeek:enum:: OpenFlow::OFPAT_STRIP_VLAN OpenFlow::ofp_action_type
Strip the 802.1q header.
.. zeek:enum:: OpenFlow::OFPAT_SET_DL_SRC OpenFlow::ofp_action_type
Ethernet source address.
.. zeek:enum:: OpenFlow::OFPAT_SET_DL_DST OpenFlow::ofp_action_type
Ethernet destination address.
.. zeek:enum:: OpenFlow::OFPAT_SET_NW_SRC OpenFlow::ofp_action_type
IP source address.
.. zeek:enum:: OpenFlow::OFPAT_SET_NW_DST OpenFlow::ofp_action_type
IP destination address.
.. zeek:enum:: OpenFlow::OFPAT_SET_NW_TOS OpenFlow::ofp_action_type
IP ToS (DSCP field, 6 bits).
.. zeek:enum:: OpenFlow::OFPAT_SET_TP_SRC OpenFlow::ofp_action_type
TCP/UDP source port.
.. zeek:enum:: OpenFlow::OFPAT_SET_TP_DST OpenFlow::ofp_action_type
TCP/UDP destination port.
.. zeek:enum:: OpenFlow::OFPAT_ENQUEUE OpenFlow::ofp_action_type
Output to queue.
.. zeek:enum:: OpenFlow::OFPAT_VENDOR OpenFlow::ofp_action_type
Vendor specific.
Openflow action_type definitions.
The openflow action type defines
what actions openflow can take
to modify a packet
.. zeek:type:: OpenFlow::ofp_config_flags
:source-code: base/frameworks/openflow/consts.zeek 219 228
:Type: :zeek:type:`enum`
.. zeek:enum:: OpenFlow::OFPC_FRAG_NORMAL OpenFlow::ofp_config_flags
No special handling for fragments.
.. zeek:enum:: OpenFlow::OFPC_FRAG_DROP OpenFlow::ofp_config_flags
Drop fragments.
.. zeek:enum:: OpenFlow::OFPC_FRAG_REASM OpenFlow::ofp_config_flags
Reassemble (only if OFPC_IP_REASM set).
.. zeek:enum:: OpenFlow::OFPC_FRAG_MASK OpenFlow::ofp_config_flags
Openflow config flag definitions.
TODO: describe
.. zeek:type:: OpenFlow::ofp_flow_mod_command
:source-code: base/frameworks/openflow/consts.zeek 203 215
:Type: :zeek:type:`enum`
.. zeek:enum:: OpenFlow::OFPFC_ADD OpenFlow::ofp_flow_mod_command
New flow.
.. zeek:enum:: OpenFlow::OFPFC_MODIFY OpenFlow::ofp_flow_mod_command
Modify all matching flows.
.. zeek:enum:: OpenFlow::OFPFC_MODIFY_STRICT OpenFlow::ofp_flow_mod_command
Modify entry strictly matching wildcards.
.. zeek:enum:: OpenFlow::OFPFC_DELETE OpenFlow::ofp_flow_mod_command
Delete all matching flows.
.. zeek:enum:: OpenFlow::OFPFC_DELETE_STRICT OpenFlow::ofp_flow_mod_command
Strictly matching wildcards and priority.
Openflow flow_mod_command definitions.
The openflow flow_mod_command describes
of what kind an action is.

View file

@ -0,0 +1,50 @@
:orphan:
Package: base/frameworks/openflow
=================================
The OpenFlow framework exposes the data structures and functions
necessary to interface to OpenFlow capable hardware.
:doc:`/scripts/base/frameworks/openflow/__load__.zeek`
:doc:`/scripts/base/frameworks/openflow/consts.zeek`
Constants used by the OpenFlow framework.
:doc:`/scripts/base/frameworks/openflow/types.zeek`
Types used by the OpenFlow framework.
:doc:`/scripts/base/frameworks/openflow/main.zeek`
Zeek's OpenFlow control framework.
This plugin-based framework allows to control OpenFlow capable
switches by implementing communication to an OpenFlow controller
via plugins. The framework has to be instantiated via the new function
in one of the plugins. This framework only offers very low-level
functionality; if you want to use OpenFlow capable switches, e.g.,
for shunting, please look at the NetControl framework, which provides higher
level functions and can use the OpenFlow framework as a backend.
:doc:`/scripts/base/frameworks/openflow/plugins/__load__.zeek`
:doc:`/scripts/base/frameworks/openflow/plugins/ryu.zeek`
OpenFlow plugin for the Ryu controller.
:doc:`/scripts/base/frameworks/openflow/plugins/log.zeek`
OpenFlow plugin that outputs flow-modification commands
to a Zeek log file.
:doc:`/scripts/base/frameworks/openflow/plugins/broker.zeek`
OpenFlow plugin for interfacing to controllers via Broker.
:doc:`/scripts/base/frameworks/openflow/non-cluster.zeek`

View file

@ -0,0 +1,279 @@
:tocdepth: 3
base/frameworks/openflow/main.zeek
==================================
.. zeek:namespace:: OpenFlow
Zeek's OpenFlow control framework.
This plugin-based framework allows to control OpenFlow capable
switches by implementing communication to an OpenFlow controller
via plugins. The framework has to be instantiated via the new function
in one of the plugins. This framework only offers very low-level
functionality; if you want to use OpenFlow capable switches, e.g.,
for shunting, please look at the NetControl framework, which provides higher
level functions and can use the OpenFlow framework as a backend.
:Namespace: OpenFlow
:Imports: :doc:`base/frameworks/openflow/consts.zeek </scripts/base/frameworks/openflow/consts.zeek>`, :doc:`base/frameworks/openflow/types.zeek </scripts/base/frameworks/openflow/types.zeek>`
Summary
~~~~~~~
Events
######
============================================================= =============================================================================================
:zeek:id:`OpenFlow::controller_activated`: :zeek:type:`event` Event that is raised once a controller finishes initialization
and is completely activated.
:zeek:id:`OpenFlow::flow_mod_failure`: :zeek:type:`event` Reports an error while installing a flow Rule.
:zeek:id:`OpenFlow::flow_mod_success`: :zeek:type:`event` Event confirming successful modification of a flow rule.
:zeek:id:`OpenFlow::flow_removed`: :zeek:type:`event` Reports that a flow was removed by the switch because of either the hard or the idle timeout.
============================================================= =============================================================================================
Functions
#########
================================================================= =====================================================================
:zeek:id:`OpenFlow::controller_init_done`: :zeek:type:`function` Function to signal that a controller finished activation and is
ready to use.
:zeek:id:`OpenFlow::flow_clear`: :zeek:type:`function` Clear the current flow table of the controller.
:zeek:id:`OpenFlow::flow_mod`: :zeek:type:`function` Global flow_mod function.
:zeek:id:`OpenFlow::generate_cookie`: :zeek:type:`function` Function to generate a new cookie using our group id.
:zeek:id:`OpenFlow::get_cookie_gid`: :zeek:type:`function` Function to get the group id out of a given cookie.
:zeek:id:`OpenFlow::get_cookie_uid`: :zeek:type:`function` Function to get the unique id out of a given cookie.
:zeek:id:`OpenFlow::lookup_controller`: :zeek:type:`function` Function to lookup a controller instance by name.
:zeek:id:`OpenFlow::match_conn`: :zeek:type:`function` Convert a conn_id record into an ofp_match record that can be used to
create match objects for OpenFlow.
:zeek:id:`OpenFlow::register_controller`: :zeek:type:`function` Function to register a controller instance.
:zeek:id:`OpenFlow::unregister_controller`: :zeek:type:`function` Function to unregister a controller instance.
================================================================= =====================================================================
Detailed Interface
~~~~~~~~~~~~~~~~~~
Events
######
.. zeek:id:: OpenFlow::controller_activated
:source-code: base/frameworks/netcontrol/plugins/openflow.zeek 433 437
:Type: :zeek:type:`event` (name: :zeek:type:`string`, controller: :zeek:type:`OpenFlow::Controller`)
Event that is raised once a controller finishes initialization
and is completely activated.
:param name: Unique name of this controller instance.
:param controller: The controller that finished activation.
.. zeek:id:: OpenFlow::flow_mod_failure
:source-code: base/frameworks/netcontrol/plugins/openflow.zeek 383 394
:Type: :zeek:type:`event` (name: :zeek:type:`string`, match: :zeek:type:`OpenFlow::ofp_match`, flow_mod: :zeek:type:`OpenFlow::ofp_flow_mod`, msg: :zeek:type:`string` :zeek:attr:`&default` = ``""`` :zeek:attr:`&optional`)
Reports an error while installing a flow Rule.
:param name: The unique name of the OpenFlow controller from which this event originated.
:param match: The ofp_match record which describes the flow to match.
:param flow_mod: The openflow flow_mod record which describes the action to take.
:param msg: Message to describe the event.
.. zeek:id:: OpenFlow::flow_mod_success
:source-code: base/frameworks/netcontrol/plugins/openflow.zeek 356 381
:Type: :zeek:type:`event` (name: :zeek:type:`string`, match: :zeek:type:`OpenFlow::ofp_match`, flow_mod: :zeek:type:`OpenFlow::ofp_flow_mod`, msg: :zeek:type:`string` :zeek:attr:`&default` = ``""`` :zeek:attr:`&optional`)
Event confirming successful modification of a flow rule.
:param name: The unique name of the OpenFlow controller from which this event originated.
:param match: The ofp_match record which describes the flow to match.
:param flow_mod: The openflow flow_mod record which describes the action to take.
:param msg: An optional informational message by the plugin.
.. zeek:id:: OpenFlow::flow_removed
:source-code: base/frameworks/netcontrol/plugins/openflow.zeek 396 418
:Type: :zeek:type:`event` (name: :zeek:type:`string`, match: :zeek:type:`OpenFlow::ofp_match`, cookie: :zeek:type:`count`, priority: :zeek:type:`count`, reason: :zeek:type:`count`, duration_sec: :zeek:type:`count`, idle_timeout: :zeek:type:`count`, packet_count: :zeek:type:`count`, byte_count: :zeek:type:`count`)
Reports that a flow was removed by the switch because of either the hard or the idle timeout.
This message is only generated by controllers that indicate that they support flow removal
in supports_flow_removed.
:param name: The unique name of the OpenFlow controller from which this event originated.
:param match: The ofp_match record which was used to create the flow.
:param cookie: The cookie that was specified when creating the flow.
:param priority: The priority that was specified when creating the flow.
:param reason: The reason for flow removal (OFPRR_*).
:param duration_sec: Duration of the flow in seconds.
:param packet_count: Packet count of the flow.
:param byte_count: Byte count of the flow.
Functions
#########
.. zeek:id:: OpenFlow::controller_init_done
:source-code: base/frameworks/openflow/main.zeek 242 252
:Type: :zeek:type:`function` (controller: :zeek:type:`OpenFlow::Controller`) : :zeek:type:`void`
Function to signal that a controller finished activation and is
ready to use. Will throw the ``OpenFlow::controller_activated``
event.
.. zeek:id:: OpenFlow::flow_clear
:source-code: base/frameworks/openflow/non-cluster.zeek 17 26
:Type: :zeek:type:`function` (controller: :zeek:type:`OpenFlow::Controller`) : :zeek:type:`bool`
Clear the current flow table of the controller.
:param controller: The controller which should execute the flow modification.
:returns: F on error or if the plugin does not support the operation, T when the operation was queued.
.. zeek:id:: OpenFlow::flow_mod
:source-code: base/frameworks/openflow/non-cluster.zeek 6 15
:Type: :zeek:type:`function` (controller: :zeek:type:`OpenFlow::Controller`, match: :zeek:type:`OpenFlow::ofp_match`, flow_mod: :zeek:type:`OpenFlow::ofp_flow_mod`) : :zeek:type:`bool`
Global flow_mod function.
:param controller: The controller which should execute the flow modification.
:param match: The ofp_match record which describes the flow to match.
:param flow_mod: The openflow flow_mod record which describes the action to take.
:returns: F on error or if the plugin does not support the operation, T when the operation was queued.
.. zeek:id:: OpenFlow::generate_cookie
:source-code: base/frameworks/openflow/main.zeek 199 209
:Type: :zeek:type:`function` (cookie: :zeek:type:`count` :zeek:attr:`&default` = ``0`` :zeek:attr:`&optional`) : :zeek:type:`count`
Function to generate a new cookie using our group id.
:param cookie: The openflow match cookie.
:returns: The cookie group id.
.. zeek:id:: OpenFlow::get_cookie_gid
:source-code: base/frameworks/openflow/main.zeek 230 240
:Type: :zeek:type:`function` (cookie: :zeek:type:`count`) : :zeek:type:`count`
Function to get the group id out of a given cookie.
:param cookie: The openflow match cookie.
:returns: The cookie group id.
.. zeek:id:: OpenFlow::get_cookie_uid
:source-code: base/frameworks/openflow/main.zeek 222 228
:Type: :zeek:type:`function` (cookie: :zeek:type:`count`) : :zeek:type:`count`
Function to get the unique id out of a given cookie.
:param cookie: The openflow match cookie.
:returns: The cookie unique id.
.. zeek:id:: OpenFlow::lookup_controller
:source-code: base/frameworks/openflow/non-cluster.zeek 41 44
:Type: :zeek:type:`function` (name: :zeek:type:`string`) : :zeek:type:`vector` of :zeek:type:`OpenFlow::Controller`
Function to lookup a controller instance by name.
:param name: Unique name of the controller to look up.
:returns: One element vector with controller, if found. Empty vector otherwise.
.. zeek:id:: OpenFlow::match_conn
:source-code: base/frameworks/openflow/main.zeek 153 194
:Type: :zeek:type:`function` (id: :zeek:type:`conn_id`, reverse: :zeek:type:`bool` :zeek:attr:`&default` = ``F`` :zeek:attr:`&optional`) : :zeek:type:`OpenFlow::ofp_match`
Convert a conn_id record into an ofp_match record that can be used to
create match objects for OpenFlow.
:param id: The conn_id record that describes the record.
:param reverse: Reverse the sources and destinations when creating the match record (default F).
:returns: ofp_match object for the conn_id record.
.. zeek:id:: OpenFlow::register_controller
:source-code: base/frameworks/openflow/non-cluster.zeek 28 34
:Type: :zeek:type:`function` (tpe: :zeek:type:`OpenFlow::Plugin`, name: :zeek:type:`string`, controller: :zeek:type:`OpenFlow::Controller`) : :zeek:type:`void`
Function to register a controller instance. This function
is called automatically by the plugin _new functions.
:param tpe: Type of this plugin.
:param name: Unique name of this controller instance.
:param controller: The controller to register.
.. zeek:id:: OpenFlow::unregister_controller
:source-code: base/frameworks/openflow/non-cluster.zeek 36 39
:Type: :zeek:type:`function` (controller: :zeek:type:`OpenFlow::Controller`) : :zeek:type:`void`
Function to unregister a controller instance. This function
should be called when a specific controller should no longer
be used.
:param controller: The controller to unregister.

View file

@ -0,0 +1,16 @@
:tocdepth: 3
base/frameworks/openflow/non-cluster.zeek
=========================================
.. zeek:namespace:: OpenFlow
:Namespace: OpenFlow
:Imports: :doc:`base/frameworks/openflow/main.zeek </scripts/base/frameworks/openflow/main.zeek>`
Summary
~~~~~~~
Detailed Interface
~~~~~~~~~~~~~~~~~~

View file

@ -0,0 +1,14 @@
:tocdepth: 3
base/frameworks/openflow/plugins/__load__.zeek
==============================================
:Imports: :doc:`base/frameworks/openflow/plugins/broker.zeek </scripts/base/frameworks/openflow/plugins/broker.zeek>`, :doc:`base/frameworks/openflow/plugins/log.zeek </scripts/base/frameworks/openflow/plugins/log.zeek>`, :doc:`base/frameworks/openflow/plugins/ryu.zeek </scripts/base/frameworks/openflow/plugins/ryu.zeek>`
Summary
~~~~~~~
Detailed Interface
~~~~~~~~~~~~~~~~~~

View file

@ -0,0 +1,91 @@
:tocdepth: 3
base/frameworks/openflow/plugins/broker.zeek
============================================
.. zeek:namespace:: OpenFlow
OpenFlow plugin for interfacing to controllers via Broker.
:Namespace: OpenFlow
:Imports: :doc:`base/frameworks/broker </scripts/base/frameworks/broker/index>`, :doc:`base/frameworks/openflow </scripts/base/frameworks/openflow/index>`
Summary
~~~~~~~
Redefinitions
#############
=============================================================================== ==========================================================
:zeek:type:`OpenFlow::ControllerState`: :zeek:type:`record` :zeek:attr:`&redef`
:New Fields: :zeek:type:`OpenFlow::ControllerState`
broker_host: :zeek:type:`addr` :zeek:attr:`&optional`
Controller ip.
broker_port: :zeek:type:`port` :zeek:attr:`&optional`
Controller listen port.
broker_dpid: :zeek:type:`count` :zeek:attr:`&optional`
OpenFlow switch datapath id.
broker_topic: :zeek:type:`string` :zeek:attr:`&optional`
Topic to send events for this controller to.
:zeek:type:`OpenFlow::Plugin`: :zeek:type:`enum`
* :zeek:enum:`OpenFlow::BROKER`
=============================================================================== ==========================================================
Events
######
========================================================== =
:zeek:id:`OpenFlow::broker_flow_clear`: :zeek:type:`event`
:zeek:id:`OpenFlow::broker_flow_mod`: :zeek:type:`event`
========================================================== =
Functions
#########
====================================================== ==============================
:zeek:id:`OpenFlow::broker_new`: :zeek:type:`function` Broker controller constructor.
====================================================== ==============================
Detailed Interface
~~~~~~~~~~~~~~~~~~
Events
######
.. zeek:id:: OpenFlow::broker_flow_clear
:source-code: base/frameworks/openflow/plugins/broker.zeek 38 38
:Type: :zeek:type:`event` (name: :zeek:type:`string`, dpid: :zeek:type:`count`)
.. zeek:id:: OpenFlow::broker_flow_mod
:source-code: base/frameworks/openflow/plugins/broker.zeek 37 37
:Type: :zeek:type:`event` (name: :zeek:type:`string`, dpid: :zeek:type:`count`, match: :zeek:type:`OpenFlow::ofp_match`, flow_mod: :zeek:type:`OpenFlow::ofp_flow_mod`)
Functions
#########
.. zeek:id:: OpenFlow::broker_new
:source-code: base/frameworks/openflow/plugins/broker.zeek 82 95
:Type: :zeek:type:`function` (name: :zeek:type:`string`, host: :zeek:type:`addr`, host_port: :zeek:type:`port`, topic: :zeek:type:`string`, dpid: :zeek:type:`count`) : :zeek:type:`OpenFlow::Controller`
Broker controller constructor.
:param host: Controller ip.
:param host_port: Controller listen port.
:param topic: Broker topic to send messages to.
:param dpid: OpenFlow switch datapath id.
:returns: OpenFlow::Controller record.

View file

@ -0,0 +1,23 @@
:orphan:
Package: base/frameworks/openflow/plugins
=========================================
Plugins for the OpenFlow framework.
:doc:`/scripts/base/frameworks/openflow/plugins/__load__.zeek`
:doc:`/scripts/base/frameworks/openflow/plugins/ryu.zeek`
OpenFlow plugin for the Ryu controller.
:doc:`/scripts/base/frameworks/openflow/plugins/log.zeek`
OpenFlow plugin that outputs flow-modification commands
to a Zeek log file.
:doc:`/scripts/base/frameworks/openflow/plugins/broker.zeek`
OpenFlow plugin for interfacing to controllers via Broker.

View file

@ -0,0 +1,129 @@
:tocdepth: 3
base/frameworks/openflow/plugins/log.zeek
=========================================
.. zeek:namespace:: OpenFlow
OpenFlow plugin that outputs flow-modification commands
to a Zeek log file.
:Namespace: OpenFlow
:Imports: :doc:`base/frameworks/logging </scripts/base/frameworks/logging/index>`, :doc:`base/frameworks/openflow </scripts/base/frameworks/openflow/index>`
Summary
~~~~~~~
Types
#####
================================================ =================================================================
:zeek:type:`OpenFlow::Info`: :zeek:type:`record` The record type which contains column fields of the OpenFlow log.
================================================ =================================================================
Redefinitions
#############
=============================================================================== =============================================================
:zeek:type:`Log::ID`: :zeek:type:`enum`
* :zeek:enum:`OpenFlow::LOG`
:zeek:type:`OpenFlow::ControllerState`: :zeek:type:`record` :zeek:attr:`&redef`
:New Fields: :zeek:type:`OpenFlow::ControllerState`
log_dpid: :zeek:type:`count` :zeek:attr:`&optional`
OpenFlow switch datapath id.
log_success_event: :zeek:type:`bool` :zeek:attr:`&optional`
Raise or do not raise success event.
:zeek:type:`OpenFlow::Plugin`: :zeek:type:`enum`
* :zeek:enum:`OpenFlow::OFLOG`
=============================================================================== =============================================================
Events
######
===================================================== ===================================================================
:zeek:id:`OpenFlow::log_openflow`: :zeek:type:`event` Event that can be handled to access the :zeek:type:`OpenFlow::Info`
record as it is sent on to the logging framework.
===================================================== ===================================================================
Hooks
#####
============================================================= =
:zeek:id:`OpenFlow::log_policy`: :zeek:type:`Log::PolicyHook`
============================================================= =
Functions
#########
=================================================== ===========================
:zeek:id:`OpenFlow::log_new`: :zeek:type:`function` Log controller constructor.
=================================================== ===========================
Detailed Interface
~~~~~~~~~~~~~~~~~~
Types
#####
.. zeek:type:: OpenFlow::Info
:source-code: base/frameworks/openflow/plugins/log.zeek 35 44
:Type: :zeek:type:`record`
.. zeek:field:: ts :zeek:type:`time` :zeek:attr:`&log`
Network time.
.. zeek:field:: dpid :zeek:type:`count` :zeek:attr:`&log`
OpenFlow switch datapath id.
.. zeek:field:: match :zeek:type:`OpenFlow::ofp_match` :zeek:attr:`&log`
OpenFlow match fields.
.. zeek:field:: flow_mod :zeek:type:`OpenFlow::ofp_flow_mod` :zeek:attr:`&log`
OpenFlow modify flow entry message.
The record type which contains column fields of the OpenFlow log.
Events
######
.. zeek:id:: OpenFlow::log_openflow
:source-code: base/frameworks/openflow/plugins/log.zeek 48 48
:Type: :zeek:type:`event` (rec: :zeek:type:`OpenFlow::Info`)
Event that can be handled to access the :zeek:type:`OpenFlow::Info`
record as it is sent on to the logging framework.
Hooks
#####
.. zeek:id:: OpenFlow::log_policy
:source-code: base/frameworks/openflow/plugins/log.zeek 16 16
:Type: :zeek:type:`Log::PolicyHook`
Functions
#########
.. zeek:id:: OpenFlow::log_new
:source-code: base/frameworks/openflow/plugins/log.zeek 70 78
:Type: :zeek:type:`function` (dpid: :zeek:type:`count`, success_event: :zeek:type:`bool` :zeek:attr:`&default` = ``T`` :zeek:attr:`&optional`) : :zeek:type:`OpenFlow::Controller`
Log controller constructor.
:param dpid: OpenFlow switch datapath id.
:param success_event: If true, flow_mod_success is raised for each logged line.
:returns: OpenFlow::Controller record.

View file

@ -0,0 +1,67 @@
:tocdepth: 3
base/frameworks/openflow/plugins/ryu.zeek
=========================================
.. zeek:namespace:: OpenFlow
OpenFlow plugin for the Ryu controller.
:Namespace: OpenFlow
:Imports: :doc:`base/frameworks/openflow </scripts/base/frameworks/openflow/index>`, :doc:`base/utils/active-http.zeek </scripts/base/utils/active-http.zeek>`, :doc:`base/utils/exec.zeek </scripts/base/utils/exec.zeek>`
Summary
~~~~~~~
Redefinitions
#############
=============================================================================== ===================================================================================
:zeek:type:`OpenFlow::ControllerState`: :zeek:type:`record` :zeek:attr:`&redef`
:New Fields: :zeek:type:`OpenFlow::ControllerState`
ryu_host: :zeek:type:`addr` :zeek:attr:`&optional`
Controller ip.
ryu_port: :zeek:type:`count` :zeek:attr:`&optional`
Controller listen port.
ryu_dpid: :zeek:type:`count` :zeek:attr:`&optional`
OpenFlow switch datapath id.
ryu_debug: :zeek:type:`bool` :zeek:attr:`&default` = ``F`` :zeek:attr:`&optional`
Enable debug mode - output JSON to stdout; do not perform actions.
:zeek:type:`OpenFlow::Plugin`: :zeek:type:`enum`
* :zeek:enum:`OpenFlow::RYU`
=============================================================================== ===================================================================================
Functions
#########
=================================================== ===========================
:zeek:id:`OpenFlow::ryu_new`: :zeek:type:`function` Ryu controller constructor.
=================================================== ===========================
Detailed Interface
~~~~~~~~~~~~~~~~~~
Functions
#########
.. zeek:id:: OpenFlow::ryu_new
:source-code: base/frameworks/openflow/plugins/ryu.zeek 181 189
:Type: :zeek:type:`function` (host: :zeek:type:`addr`, host_port: :zeek:type:`count`, dpid: :zeek:type:`count`) : :zeek:type:`OpenFlow::Controller`
Ryu controller constructor.
:param host: Controller ip.
:param host_port: Controller listen port.
:param dpid: OpenFlow switch datapath id.
:returns: OpenFlow::Controller record.

View file

@ -0,0 +1,368 @@
:tocdepth: 3
base/frameworks/openflow/types.zeek
===================================
.. zeek:namespace:: OpenFlow
Types used by the OpenFlow framework.
:Namespace: OpenFlow
:Imports: :doc:`base/frameworks/openflow/consts.zeek </scripts/base/frameworks/openflow/consts.zeek>`
Summary
~~~~~~~
Types
#####
=============================================================================== ===============================================================
:zeek:type:`OpenFlow::Controller`: :zeek:type:`record` Controller record representing an openflow controller.
:zeek:type:`OpenFlow::ControllerState`: :zeek:type:`record` :zeek:attr:`&redef` Controller related state.
:zeek:type:`OpenFlow::Plugin`: :zeek:type:`enum` Available openflow plugins.
:zeek:type:`OpenFlow::ofp_flow_action`: :zeek:type:`record` :zeek:attr:`&log` The actions that can be taken in a flow.
:zeek:type:`OpenFlow::ofp_flow_mod`: :zeek:type:`record` :zeek:attr:`&log` Openflow flow_mod definition, describing the action to perform.
:zeek:type:`OpenFlow::ofp_match`: :zeek:type:`record` :zeek:attr:`&log` Openflow match definition.
=============================================================================== ===============================================================
Detailed Interface
~~~~~~~~~~~~~~~~~~
Types
#####
.. zeek:type:: OpenFlow::Controller
:source-code: base/frameworks/openflow/types.zeek 116 131
:Type: :zeek:type:`record`
.. zeek:field:: state :zeek:type:`OpenFlow::ControllerState`
Controller related state.
.. zeek:field:: supports_flow_removed :zeek:type:`bool`
Does the controller support the flow_removed event?
.. zeek:field:: describe :zeek:type:`function` (state: :zeek:type:`OpenFlow::ControllerState`) : :zeek:type:`string`
Function that describes the controller. Has to be implemented.
.. zeek:field:: init :zeek:type:`function` (state: :zeek:type:`OpenFlow::ControllerState`) : :zeek:type:`void` :zeek:attr:`&optional`
One-time initialization function. If defined, controller_init_done has to be called once initialization finishes.
.. zeek:field:: destroy :zeek:type:`function` (state: :zeek:type:`OpenFlow::ControllerState`) : :zeek:type:`void` :zeek:attr:`&optional`
One-time destruction function.
.. zeek:field:: flow_mod :zeek:type:`function` (state: :zeek:type:`OpenFlow::ControllerState`, match: :zeek:type:`OpenFlow::ofp_match`, flow_mod: :zeek:type:`OpenFlow::ofp_flow_mod`) : :zeek:type:`bool` :zeek:attr:`&optional`
flow_mod function.
.. zeek:field:: flow_clear :zeek:type:`function` (state: :zeek:type:`OpenFlow::ControllerState`) : :zeek:type:`bool` :zeek:attr:`&optional`
flow_clear function.
Controller record representing an openflow controller.
.. zeek:type:: OpenFlow::ControllerState
:source-code: base/frameworks/openflow/types.zeek 17 24
:Type: :zeek:type:`record`
.. zeek:field:: _plugin :zeek:type:`OpenFlow::Plugin` :zeek:attr:`&optional`
Internally set to the type of plugin used.
.. zeek:field:: _name :zeek:type:`string` :zeek:attr:`&optional`
Internally set to the unique name of the controller.
.. zeek:field:: _activated :zeek:type:`bool` :zeek:attr:`&default` = ``F`` :zeek:attr:`&optional`
Internally set to true once the controller is activated.
.. zeek:field:: ryu_host :zeek:type:`addr` :zeek:attr:`&optional`
(present if :doc:`/scripts/base/frameworks/openflow/plugins/ryu.zeek` is loaded)
Controller ip.
.. zeek:field:: ryu_port :zeek:type:`count` :zeek:attr:`&optional`
(present if :doc:`/scripts/base/frameworks/openflow/plugins/ryu.zeek` is loaded)
Controller listen port.
.. zeek:field:: ryu_dpid :zeek:type:`count` :zeek:attr:`&optional`
(present if :doc:`/scripts/base/frameworks/openflow/plugins/ryu.zeek` is loaded)
OpenFlow switch datapath id.
.. zeek:field:: ryu_debug :zeek:type:`bool` :zeek:attr:`&default` = ``F`` :zeek:attr:`&optional`
(present if :doc:`/scripts/base/frameworks/openflow/plugins/ryu.zeek` is loaded)
Enable debug mode - output JSON to stdout; do not perform actions.
.. zeek:field:: log_dpid :zeek:type:`count` :zeek:attr:`&optional`
(present if :doc:`/scripts/base/frameworks/openflow/plugins/log.zeek` is loaded)
OpenFlow switch datapath id.
.. zeek:field:: log_success_event :zeek:type:`bool` :zeek:attr:`&optional`
(present if :doc:`/scripts/base/frameworks/openflow/plugins/log.zeek` is loaded)
Raise or do not raise success event.
.. zeek:field:: broker_host :zeek:type:`addr` :zeek:attr:`&optional`
(present if :doc:`/scripts/base/frameworks/openflow/plugins/broker.zeek` is loaded)
Controller ip.
.. zeek:field:: broker_port :zeek:type:`port` :zeek:attr:`&optional`
(present if :doc:`/scripts/base/frameworks/openflow/plugins/broker.zeek` is loaded)
Controller listen port.
.. zeek:field:: broker_dpid :zeek:type:`count` :zeek:attr:`&optional`
(present if :doc:`/scripts/base/frameworks/openflow/plugins/broker.zeek` is loaded)
OpenFlow switch datapath id.
.. zeek:field:: broker_topic :zeek:type:`string` :zeek:attr:`&optional`
(present if :doc:`/scripts/base/frameworks/openflow/plugins/broker.zeek` is loaded)
Topic to send events for this controller to.
:Attributes: :zeek:attr:`&redef`
Controller related state.
Can be redefined by plugins to
add state.
.. zeek:type:: OpenFlow::Plugin
:source-code: base/frameworks/openflow/types.zeek 9 13
:Type: :zeek:type:`enum`
.. zeek:enum:: OpenFlow::INVALID OpenFlow::Plugin
Internal placeholder plugin.
.. zeek:enum:: OpenFlow::RYU OpenFlow::Plugin
(present if :doc:`/scripts/base/frameworks/openflow/plugins/ryu.zeek` is loaded)
.. zeek:enum:: OpenFlow::OFLOG OpenFlow::Plugin
(present if :doc:`/scripts/base/frameworks/openflow/plugins/log.zeek` is loaded)
.. zeek:enum:: OpenFlow::BROKER OpenFlow::Plugin
(present if :doc:`/scripts/base/frameworks/openflow/plugins/broker.zeek` is loaded)
Available openflow plugins.
.. zeek:type:: OpenFlow::ofp_flow_action
:source-code: base/frameworks/openflow/types.zeek 62 85
:Type: :zeek:type:`record`
.. zeek:field:: out_ports :zeek:type:`vector` of :zeek:type:`count` :zeek:attr:`&default` = ``[]`` :zeek:attr:`&optional` :zeek:attr:`&log`
Output ports to send data to.
.. zeek:field:: vlan_vid :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
Set vlan vid to this value.
.. zeek:field:: vlan_pcp :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
Set vlan priority to this value.
.. zeek:field:: vlan_strip :zeek:type:`bool` :zeek:attr:`&default` = ``F`` :zeek:attr:`&optional` :zeek:attr:`&log`
Strip vlan tag.
.. zeek:field:: dl_src :zeek:type:`string` :zeek:attr:`&optional` :zeek:attr:`&log`
Set ethernet source address.
.. zeek:field:: dl_dst :zeek:type:`string` :zeek:attr:`&optional` :zeek:attr:`&log`
Set ethernet destination address.
.. zeek:field:: nw_tos :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
Set ip tos to this value.
.. zeek:field:: nw_src :zeek:type:`addr` :zeek:attr:`&optional` :zeek:attr:`&log`
Set source to this ip.
.. zeek:field:: nw_dst :zeek:type:`addr` :zeek:attr:`&optional` :zeek:attr:`&log`
Set destination to this ip.
.. zeek:field:: tp_src :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
Set tcp/udp source port.
.. zeek:field:: tp_dst :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
Set tcp/udp destination port.
:Attributes: :zeek:attr:`&log`
The actions that can be taken in a flow.
(Separate record to make ofp_flow_mod less crowded)
.. zeek:type:: OpenFlow::ofp_flow_mod
:source-code: base/frameworks/openflow/types.zeek 88 113
:Type: :zeek:type:`record`
.. zeek:field:: cookie :zeek:type:`count` :zeek:attr:`&log`
Opaque controller-issued identifier.
.. zeek:field:: table_id :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
Table to put the flow in. OFPTT_ALL can be used for delete,
to delete flows from all matching tables.
.. zeek:field:: command :zeek:type:`OpenFlow::ofp_flow_mod_command` :zeek:attr:`&log`
One of OFPFC_*.
.. zeek:field:: idle_timeout :zeek:type:`count` :zeek:attr:`&default` = ``0`` :zeek:attr:`&optional` :zeek:attr:`&log`
Idle time before discarding (seconds).
.. zeek:field:: hard_timeout :zeek:type:`count` :zeek:attr:`&default` = ``0`` :zeek:attr:`&optional` :zeek:attr:`&log`
Max time before discarding (seconds).
.. zeek:field:: priority :zeek:type:`count` :zeek:attr:`&default` = ``0`` :zeek:attr:`&optional` :zeek:attr:`&log`
Priority level of flow entry.
.. zeek:field:: out_port :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
For OFPFC_DELETE* commands, require matching entry to include
this as an output port/group. OFPP_ANY/OFPG_ANY means no restrictions.
.. zeek:field:: out_group :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
.. zeek:field:: flags :zeek:type:`count` :zeek:attr:`&default` = ``0`` :zeek:attr:`&optional` :zeek:attr:`&log`
Bitmap of the OFPFF_* flags
.. zeek:field:: actions :zeek:type:`OpenFlow::ofp_flow_action` :zeek:attr:`&default` = *...* :zeek:attr:`&optional` :zeek:attr:`&log`
Actions to take on match
:Attributes: :zeek:attr:`&log`
Openflow flow_mod definition, describing the action to perform.
.. zeek:type:: OpenFlow::ofp_match
:source-code: base/frameworks/openflow/types.zeek 31 58
:Type: :zeek:type:`record`
.. zeek:field:: in_port :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
.. zeek:field:: dl_src :zeek:type:`string` :zeek:attr:`&optional` :zeek:attr:`&log`
.. zeek:field:: dl_dst :zeek:type:`string` :zeek:attr:`&optional` :zeek:attr:`&log`
.. zeek:field:: dl_vlan :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
.. zeek:field:: dl_vlan_pcp :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
.. zeek:field:: dl_type :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
.. zeek:field:: nw_tos :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
.. zeek:field:: nw_proto :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
.. zeek:field:: nw_src :zeek:type:`subnet` :zeek:attr:`&optional` :zeek:attr:`&log`
.. zeek:field:: nw_dst :zeek:type:`subnet` :zeek:attr:`&optional` :zeek:attr:`&log`
.. zeek:field:: tp_src :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
.. zeek:field:: tp_dst :zeek:type:`count` :zeek:attr:`&optional` :zeek:attr:`&log`
:Attributes: :zeek:attr:`&log`
Openflow match definition.
The openflow match record describes
which packets match to a specific
rule in a flow table.