directflow¶
DirectFlow management and status module
DirectFlow is a software feature that allows OpenFlow-like rules to be programmed in switch hardware manually. Because a DirectFlow enabled switch allows normal forwarding features to operate, it gives operators a reliable way of building for the exceptional “just this one feature” parts of their network in a flexible manner. This module allows for the management of DirectFlow configuration as well as reactions to changes in status of flows.
-
namespace
eos -
class
flow_handler - #include <directflow.h>
Flow handler.
A flow handler is notified when the status of configured flows changes.
Public Functions
-
flow_handler(directflow_mgr *)
-
directflow_mgr *
get_directflow_mgr() const
-
void
watch_all_flows(bool) Registers this class to receive updates on changes to flow state. Expects a boolean signifying whether notifications should be propagated to this instance or not.
-
void
watch_flow(std::string const &, bool) Registers this class to receive updates on changes to flow state for the given flow name. Expects the name of the flow to watch and a boolean signifying whether notifications should be propagated to this instance or not.
-
virtual void
on_flow_status(std::string const &, flow_status_t) Handler called when flow status changes.
-
-
class
flow_entry_iter_t - #include <directflow.h>
An iterator providing forwards iteration through the configured flows.
Private Functions
-
flow_entry_iter_t(flow_entry_iter_impl * const)
Friends
-
friend class
flow_entry_iter_impl
-
-
class
directflow_mgr - #include <directflow.h>
DirectFlow configuration and status manager.
Public Functions
-
virtual
~directflow_mgr()
-
virtual flow_entry_iter_t
flow_entry_iter() const = 0 Iterate across all configured flows.
-
virtual bool
exists(std::string const &) const = 0 Tests for existence of a flow entry with the given name.
-
virtual flow_entry_t
flow_entry(std::string const &) const = 0 Return the flow entry with the given name.
-
virtual void
flow_entry_set(flow_entry_t const &) = 0 Insert or update a flow.
-
virtual void
flow_entry_del(std::string const &) = 0 Delete a flow.
-
virtual flow_status_t
flow_status(std::string const & name) const = 0 Return the status of the given flow.
-
virtual flow_rejected_reason_t
flow_rejected_reason(std::string const & name) const = 0 The reason a flow was not programmed. Only valid if the flow’s status is FLOW_REJECTED
-
virtual flow_counters_t
flow_counters(std::string const & name) const = 0 Return the counters for a flow.
Protected Functions
-
directflow_mgr()
Private Members
-
directflow_mgr
Friends
-
friend class
flow_handler
-
virtual
-
class
Type definitions in directflow¶
-
namespace
eos Typedefs
-
typedef uint16_t
flow_priority_t
-
typedef uint16_t
eth_type_t
-
typedef uint8_t
cos_t
Enums
- flow_status_t enum
Flow entry status.
Values:
FLOW_STATUS_UNKNOWN-FLOW_CREATED-Flow created or modified in hardware.
FLOW_DELETED-Flow removed from hardware.
FLOW_REJECTED-Flow not created.
FLOW_PENDING-Flow requesting hardware resources.
FLOW_HW_TABLE_PENDING-Flow request submitted for tcam resource entry.
FLOW_REQUEST_ACCEPTED-Flow request accepted.
- flow_rejected_reason_t enum
Reason why a flow was not successfully created in hardware.
Values:
FLOW_REJECTED_BAD_MATCH-Flow not created due to bad match criteria.
FLOW_REJECTED_BAD_ACTION-Flow not created due to bad action criteria.
FLOW_REJECTED_HW_TABLE_FULL-Flow not created due to insufficient resources.
FLOW_REJECTED_OTHER-Flow not created for some other reason.
FLOW_REJECTED_ACTIONS_UNSUPPORTED-Flow not created due to unsupported action set.
FLOW_REJECTED_TIMEOUT_NOT_SUPPORTED-Flow not created due to unsupported timeouts set.
-
class
flow_match_field_set_t - #include <directflow.h>
Defines the set of fields to match on flow.
Public Functions
-
flow_match_field_set_t()
-
void
input_intfs_is(bool enabled)
-
bool
input_intfs() const
-
void
eth_src_is(bool enabled)
-
bool
eth_src() const
-
void
eth_dst_is(bool enabled)
-
bool
eth_dst() const
-
void
eth_type_is(bool enabled)
-
bool
eth_type() const
-
void
vlan_id_is(bool enabled)
-
bool
vlan_id() const
-
void
cos_is(bool enabled)
-
bool
cos() const
-
void
ip_src_is(bool enabled)
-
bool
ip_src() const
-
void
ip_dst_is(bool enabled)
-
bool
ip_dst() const
-
bool
operator==(flow_match_field_set_t const & other) const
-
bool
operator!=(flow_match_field_set_t const & other) const
-
bool
operator<(flow_match_field_set_t const & other) const
-
uint32_t
hash() const The hash function for type flow_match_field_set_t.
-
void
mix_me(hash_mix & h) const The hash mix function for type flow_match_field_set_t.
-
std::string
to_string() const Returns a string representation of the current object’s values.
Private Members
-
uint32_t
match_bitset_
Friends
-
friend class
flow_helper
-
friend std::ostream &
operator<< A utility stream operator that adds a string representation of flow_match_field_set_t to the ostream.
-
-
class
flow_match_t - #include <directflow.h>
Match criteria for a flow.
Public Functions
-
flow_match_t()
-
flow_match_t(const flow_match_t & other)
-
flow_match_t &
operator=(flow_match_t const & other)
-
flow_match_field_set_t
match_field_set() const Getter for ‘match_field_set’: the fields to match on.
-
void
match_field_set_is(flow_match_field_set_t match_field_set) Setter for ‘match_field_set’.
-
std::set< intf_id_t > const &
input_intfs() const Getter for ‘input_intfs’: the input interfaces to match on.
-
void
input_intfs_is(std::set< intf_id_t > const & input_intfs) Setter for ‘input_intfs’.
-
void
input_intf_set(intf_id_t const & value) Inserts one input_intf of ‘value’ to the set.
-
void
input_intf_del(intf_id_t const & value) Deletes one input_intf of ‘value’ from the set.
-
eth_addr_t
eth_src() const Getter for ‘eth_src’: the source Ethernet address to match on.
-
void
eth_src_is(eth_addr_t eth_src) Setter for ‘eth_src’.
-
void
eth_src_is(eth_addr_t src, eth_addr_t mask)
-
eth_addr_t
eth_src_mask() const
-
void
eth_src_mask_is(eth_addr_t eth_src_mask)
-
eth_addr_t
eth_dst() const Getter for ‘eth_dst’: the destination Ethernet address to match on.
-
void
eth_dst_is(eth_addr_t eth_dst) Setter for ‘eth_dst’.
-
void
eth_dst_is(eth_addr_t dst, eth_addr_t mask)
-
eth_addr_t
eth_dst_mask() const
-
void
eth_dst_mask_is(eth_addr_t eth_dst_mask)
-
eth_type_t
eth_type() const Getter for ‘eth_type’: the Ethernet type to match on.
-
void
eth_type_is(eth_type_t eth_type) Setter for ‘eth_type’.
-
vlan_id_t
vlan_id() const Getter for ‘vlan_id’: the VLAN id to match.
-
void
vlan_id_is(vlan_id_t vlan_id) Setter for ‘vlan_id’.
-
void
vlan_id_is(vlan_id_t vlan_id, uint16_t mask)
-
vlan_id_t
vlan_id_mask() const
-
void
vlan_id_mask_is(vlan_id_t vlan_id_mask)
-
cos_t
cos() const Getter for ‘cos’: the class of service to match on, only used if vlan_id is set to something other than 0.
-
void
cos_is(cos_t cos) Setter for ‘cos’.
-
ip_addr_t
ip_src() const Getter for ‘ip_src’: the source IPv4 address to match on.
-
void
ip_src_is(ip_addr_t const & ip_src) Setter for ‘ip_src’.
-
ip_addr_t
ip_src_mask() const
-
void
ip_src_mask_is(ip_addr_t const & ip_src_mask)
-
ip_addr_t
ip_dst() const Getter for ‘ip_dst’: the destination IPv4 address to match on.
-
void
ip_dst_is(ip_addr_t const & ip_dst) Setter for ‘ip_dst’.
-
ip_addr_t
ip_dst_mask() const
-
void
ip_dst_mask_is(ip_addr_t const & ip_dst_mask)
-
bool
operator==(flow_match_t const & other) const
-
bool
operator!=(flow_match_t const & other) const
-
bool
operator<(flow_match_t const & other) const
-
uint32_t
hash() const The hash function for type flow_match_t.
-
void
mix_me(hash_mix & h) const The hash mix function for type flow_match_t.
-
std::string
to_string() const Returns a string representation of the current object’s values.
Private Members
-
std::shared_ptr< flow_match_impl_t >
pimpl
Friends
-
friend std::ostream &
operator<< A utility stream operator that adds a string representation of flow_match_t to the ostream.
-
-
class
flow_action_set_t - #include <directflow.h>
Defines the set of enabled actions.
Public Functions
-
flow_action_set_t()
-
void
set_output_intfs_is(bool enabled)
-
bool
set_output_intfs() const
-
void
set_vlan_id_is(bool enabled)
-
bool
set_vlan_id() const
-
void
set_cos_is(bool enabled)
-
bool
set_cos() const
-
void
set_eth_src_is(bool enabled)
-
bool
set_eth_src() const
-
void
set_eth_dst_is(bool enabled)
-
bool
set_eth_dst() const
-
void
set_ip_src_is(bool enabled)
-
bool
set_ip_src() const
-
void
set_ip_dst_is(bool enabled)
-
bool
set_ip_dst() const
-
bool
operator==(flow_action_set_t const & other) const
-
bool
operator!=(flow_action_set_t const & other) const
-
uint32_t
hash() const The hash function for type flow_action_set_t.
-
void
mix_me(hash_mix & h) const The hash mix function for type flow_action_set_t.
-
std::string
to_string() const Returns a string representation of the current object’s values.
Private Members
-
uint32_t
action_bitset_
Friends
-
friend class
flow_helper
-
friend std::ostream &
operator<< A utility stream operator that adds a string representation of flow_action_set_t to the ostream.
-
-
class
flow_action_t - #include <directflow.h>
Defines the actions to take on a matching flow.
Public Functions
-
flow_action_t()
-
flow_action_t(const flow_action_t & other)
-
flow_action_t &
operator=(flow_action_t const & other)
-
flow_action_set_t
action_set() const Getter for ‘action_set’: actions that are enabled.
-
void
action_set_is(flow_action_set_t action_set) Setter for ‘action_set’.
-
std::set< intf_id_t > const &
output_intfs() const Getter for ‘output_intfs’: 0 or more the output interfaces, passing in the empty set will cause the packet to be dropped.
-
void
output_intfs_is(std::set< intf_id_t > const & output_intfs) Setter for ‘output_intfs’.
-
void
output_intf_set(intf_id_t const & value) Inserts one output_intf of ‘value’ to the set.
-
void
output_intf_del(intf_id_t const & value) Deletes one output_intf of ‘value’ from the set.
-
vlan_id_t
vlan_id() const
-
void
vlan_id_is(vlan_id_t vlan_id)
-
cos_t
cos() const Getter for ‘cos’: the class of service.
-
void
cos_is(cos_t cos) Setter for ‘cos’.
-
eth_addr_t
eth_src() const Getter for ‘eth_src’: the source Ethernet address.
-
void
eth_src_is(eth_addr_t eth_src) Setter for ‘eth_src’.
-
eth_addr_t
eth_dst() const Getter for ‘eth_dst’: the destination Ethernet address.
-
void
eth_dst_is(eth_addr_t eth_dst) Setter for ‘eth_dst’.
-
ip_addr_t
ip_src() const Getter for ‘ip_src’: the source IPv4 address.
-
void
ip_src_is(ip_addr_t const & ip_src) Setter for ‘ip_src’.
-
ip_addr_t
ip_dst() const Getter for ‘ip_dst’: the destination IPv4 address.
-
void
ip_dst_is(ip_addr_t const & ip_dst) Setter for ‘ip_dst’.
-
bool
operator==(flow_action_t const & other) const
-
bool
operator!=(flow_action_t const & other) const
-
uint32_t
hash() const The hash function for type flow_action_t.
-
void
mix_me(hash_mix & h) const The hash mix function for type flow_action_t.
-
std::string
to_string() const Returns a string representation of the current object’s values.
Private Members
-
std::shared_ptr< flow_action_impl_t >
pimpl
Friends
-
friend std::ostream &
operator<< A utility stream operator that adds a string representation of flow_action_t to the ostream.
-
-
class
flow_entry_t - #include <directflow.h>
Defines a flow entry.
Public Functions
-
flow_entry_t()
-
flow_entry_t(std::string const & name, flow_match_t match, flow_action_t action, flow_priority_t priority)
-
flow_entry_t(const flow_entry_t & other)
-
flow_entry_t &
operator=(flow_entry_t const & other)
-
std::string
name() const
-
flow_match_t
match() const
-
flow_action_t
action() const
-
flow_priority_t
priority() const
-
bool
operator==(flow_entry_t const & other) const
-
bool
operator!=(flow_entry_t const & other) const
-
uint32_t
hash() const The hash function for type flow_entry_t.
-
void
mix_me(hash_mix & h) const The hash mix function for type flow_entry_t.
-
std::string
to_string() const Returns a string representation of the current object’s values.
Private Members
-
std::shared_ptr< flow_entry_impl_t >
pimpl
Friends
-
friend std::ostream &
operator<< A utility stream operator that adds a string representation of flow_entry_t to the ostream.
-
-
class
flow_counters_t - #include <directflow.h>
Defines counters for a flow.
Public Functions
-
flow_counters_t()
-
flow_counters_t(const flow_counters_t & other)
-
flow_counters_t &
operator=(flow_counters_t const & other)
-
uint64_t
bytes() const
-
uint64_t
packets() const
-
bool
operator==(flow_counters_t const & other) const
-
bool
operator!=(flow_counters_t const & other) const
-
uint32_t
hash() const The hash function for type flow_counters_t.
-
void
mix_me(hash_mix & h) const The hash mix function for type flow_counters_t.
-
std::string
to_string() const Returns a string representation of the current object’s values.
Private Members
-
std::shared_ptr< flow_counters_impl_t >
pimpl
Friends
-
friend class
flow_helper
-
friend std::ostream &
operator<< A utility stream operator that adds a string representation of flow_counters_t to the ostream.
-
-
typedef uint16_t