mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-22 23:04:43 +00:00
openvswitch: add Ethernet push and pop actions
It's not allowed to push Ethernet header in front of another Ethernet header. It's not allowed to pop Ethernet header if there's a vlan tag. This preserves the invariant that L3 packet never has a vlan tag. Based on previous versions by Lorand Jakab and Simon Horman. Signed-off-by: Lorand Jakab <lojakab@cisco.com> Signed-off-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: Jiri Benc <jbenc@redhat.com> Acked-by: Pravin B Shelar <pshelar@ovn.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
0a6410fbde
commit
91820da6ae
3 changed files with 82 additions and 0 deletions
|
@ -705,6 +705,15 @@ enum ovs_nat_attr {
|
|||
|
||||
#define OVS_NAT_ATTR_MAX (__OVS_NAT_ATTR_MAX - 1)
|
||||
|
||||
/*
|
||||
* struct ovs_action_push_eth - %OVS_ACTION_ATTR_PUSH_ETH action argument.
|
||||
* @addresses: Source and destination MAC addresses.
|
||||
* @eth_type: Ethernet type
|
||||
*/
|
||||
struct ovs_action_push_eth {
|
||||
struct ovs_key_ethernet addresses;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ovs_action_attr - Action types.
|
||||
*
|
||||
|
@ -738,6 +747,10 @@ enum ovs_nat_attr {
|
|||
* is no MPLS label stack, as determined by ethertype, no action is taken.
|
||||
* @OVS_ACTION_ATTR_CT: Track the connection. Populate the conntrack-related
|
||||
* entries in the flow key.
|
||||
* @OVS_ACTION_ATTR_PUSH_ETH: Push a new outermost Ethernet header onto the
|
||||
* packet.
|
||||
* @OVS_ACTION_ATTR_POP_ETH: Pop the outermost Ethernet header off the
|
||||
* packet.
|
||||
*
|
||||
* Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all
|
||||
* fields within a header are modifiable, e.g. the IPv4 protocol and fragment
|
||||
|
@ -765,6 +778,8 @@ enum ovs_action_attr {
|
|||
* bits. */
|
||||
OVS_ACTION_ATTR_CT, /* Nested OVS_CT_ATTR_* . */
|
||||
OVS_ACTION_ATTR_TRUNC, /* u32 struct ovs_action_trunc. */
|
||||
OVS_ACTION_ATTR_PUSH_ETH, /* struct ovs_action_push_eth. */
|
||||
OVS_ACTION_ATTR_POP_ETH, /* No argument. */
|
||||
|
||||
__OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted
|
||||
* from userspace. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue