mavtables
0.2.1
MAVLink router and firewall.
|
#include <GoTo.hpp>
Public Member Functions | |
GoTo (std::shared_ptr< Chain > chain, std::optional< If > condition={}) | |
GoTo (std::shared_ptr< Chain > chain, int priority, std::optional< If > condition={}) | |
virtual Action | action (const Packet &packet, const MAVAddress &address) const |
virtual std::unique_ptr< Rule > | clone () const |
virtual bool | operator== (const Rule &other) const |
virtual bool | operator!= (const Rule &other) const |
Protected Member Functions | |
virtual std::ostream & | print_ (std::ostream &os) const |
Protected Attributes | |
std::optional< If > | condition_ |
Delegate decision on a packet to another Chain.
Rule to delegate the decision on what to do with a packet to a filter Chain. In particular, final decision is given to this Chain. If the Chain cannot decide what to do with the Packet the global default action should be taken.
Construct a goto rule given a chain to delegate to, without a priority.
A goto rule is used to delegate the decision on whether to accept or reject a packet/address combination to another filter Chain. If this called chain does not make a decision then the default action should be taken.
chain | The chain to delegate decisions of whether to accept or reject a packet/address combination to. nullptr is not valid. |
condition | The condition used to determine the rule matches a particular packet/address combination given to the action method. The default is {} which indicates the rule matches any packet/address combination. |
std::invalid_argument | if the given pointer is null. |
Construct a goto rule given a chain to delegate to, with a priority.
A goto rule is used to delegate the decision on whether to accept or reject a packet/address combination to another filter Chain. If this called chain does not make a decision then the default action should be taken.
chain | The chain to delegate decisions of whether to accept or reject a packet/address combination to. nullptr is not valid. |
priority | The priority to accept packets with. A higher number is more important and will be routed first. |
condition | The condition used to determine the rule matches a particular packet/address combination given to the action method. The default is {} which indicates the rule matches any packet/address combination. |
std::invalid_argument | if the given pointer is null. |
|
virtual |
Decide what to do with a Packet.
Determine what action to take with the given packet
sent to the given address
. The possible actions are documented in the Action class. The continue object is always returned if the condition was set and does not match the packet/address combination.
packet | The packet to determine whether to allow or not. |
address | The address the packet will be sent out on if the action dictates it. |
The GoTo class delegates the action choice to the contained Chain. If the Chain decides on the continue action this method will return the default instead since final decision for a GoTo should be with the contained Chain or with the default action. In other words, once a GoTo rule matches, no further rule in the chain should ever be ran, regardless of the contained chain.
Implements Rule.
Definition at line 120 of file GoTo.cpp.
References Rule::condition_, Action::CONTINUE, Action::make_continue(), and Action::make_default().
|
virtual |
|
virtual |
Inequality comparison.
Compares the type of the Rule and the condition (If) if set.
other | The other rule to compare this to. |
true | if this rule is not the same as other . |
false | if this rule is the same as other . |
Compares the chain and priority (if set) associated with the rule as well.
Implements Rule.
Definition at line 175 of file GoTo.cpp.
References Rule::condition_.
|
virtual |
Equality comparison.
Compares the type of the Rule and the condition (If) if set.
other | The other rule to compare this to. |
true | if this rule is the same as other . |
false | if this rule is not the same as other . |
Compares the chain and priority (if set) associated with the rule as well.
Implements Rule.
Definition at line 162 of file GoTo.cpp.
References Rule::condition_.
|
protectedvirtual |
Print the rule to the given output stream.
os | The output stream to print to. |
Prints "goto <Chain Name> <If Statement>"
or "goto <Chain Name> with
priority <If Statement> with priority <priority>"
if the priority is given.
Implements Rule.
Definition at line 93 of file GoTo.cpp.
References Rule::condition_.