|
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_.
1.8.14