.. | .. |
---|
86 | 86 | OVS_DP_ATTR_MEGAFLOW_STATS, /* struct ovs_dp_megaflow_stats */ |
---|
87 | 87 | OVS_DP_ATTR_USER_FEATURES, /* OVS_DP_F_* */ |
---|
88 | 88 | OVS_DP_ATTR_PAD, |
---|
| 89 | + OVS_DP_ATTR_MASKS_CACHE_SIZE, |
---|
89 | 90 | __OVS_DP_ATTR_MAX |
---|
90 | 91 | }; |
---|
91 | 92 | |
---|
.. | .. |
---|
102 | 103 | __u64 n_mask_hit; /* Number of masks used for flow lookups. */ |
---|
103 | 104 | __u32 n_masks; /* Number of masks for the datapath. */ |
---|
104 | 105 | __u32 pad0; /* Pad for future expension. */ |
---|
| 106 | + __u64 n_cache_hit; /* Number of cache matches for flow lookups. */ |
---|
105 | 107 | __u64 pad1; /* Pad for future expension. */ |
---|
106 | | - __u64 pad2; /* Pad for future expension. */ |
---|
107 | 108 | }; |
---|
108 | 109 | |
---|
109 | 110 | struct ovs_vport_stats { |
---|
.. | .. |
---|
122 | 123 | |
---|
123 | 124 | /* Allow datapath to associate multiple Netlink PIDs to each vport */ |
---|
124 | 125 | #define OVS_DP_F_VPORT_PIDS (1 << 1) |
---|
| 126 | + |
---|
| 127 | +/* Allow tc offload recirc sharing */ |
---|
| 128 | +#define OVS_DP_F_TC_RECIRC_SHARING (1 << 2) |
---|
125 | 129 | |
---|
126 | 130 | /* Fixed logical ports. */ |
---|
127 | 131 | #define OVSP_LOCAL ((__u32)0) |
---|
.. | .. |
---|
170 | 174 | * @OVS_PACKET_ATTR_LEN: Packet size before truncation. |
---|
171 | 175 | * %OVS_PACKET_ATTR_USERSPACE action specify the Maximum received fragment |
---|
172 | 176 | * size. |
---|
| 177 | + * @OVS_PACKET_ATTR_HASH: Packet hash info (e.g. hash, sw_hash and l4_hash in skb). |
---|
173 | 178 | * |
---|
174 | 179 | * These attributes follow the &struct ovs_header within the Generic Netlink |
---|
175 | 180 | * payload for %OVS_PACKET_* commands. |
---|
.. | .. |
---|
187 | 192 | OVS_PACKET_ATTR_PROBE, /* Packet operation is a feature probe, |
---|
188 | 193 | error logging should be suppressed. */ |
---|
189 | 194 | OVS_PACKET_ATTR_MRU, /* Maximum received IP fragment size. */ |
---|
190 | | - OVS_PACKET_ATTR_LEN, /* Packet size before truncation. */ |
---|
| 195 | + OVS_PACKET_ATTR_LEN, /* Packet size before truncation. */ |
---|
| 196 | + OVS_PACKET_ATTR_HASH, /* Packet hash. */ |
---|
191 | 197 | __OVS_PACKET_ATTR_MAX |
---|
192 | 198 | }; |
---|
193 | 199 | |
---|
.. | .. |
---|
364 | 370 | OVS_TUNNEL_KEY_ATTR_IPV6_DST, /* struct in6_addr dst IPv6 address. */ |
---|
365 | 371 | OVS_TUNNEL_KEY_ATTR_PAD, |
---|
366 | 372 | OVS_TUNNEL_KEY_ATTR_ERSPAN_OPTS, /* struct erspan_metadata */ |
---|
| 373 | + OVS_TUNNEL_KEY_ATTR_IPV4_INFO_BRIDGE, /* No argument. IPV4_INFO_BRIDGE mode.*/ |
---|
367 | 374 | __OVS_TUNNEL_KEY_ATTR_MAX |
---|
368 | 375 | }; |
---|
369 | 376 | |
---|
.. | .. |
---|
667 | 674 | }; |
---|
668 | 675 | |
---|
669 | 676 | /** |
---|
| 677 | + * struct ovs_action_add_mpls - %OVS_ACTION_ATTR_ADD_MPLS action |
---|
| 678 | + * argument. |
---|
| 679 | + * @mpls_lse: MPLS label stack entry to push. |
---|
| 680 | + * @mpls_ethertype: Ethertype to set in the encapsulating ethernet frame. |
---|
| 681 | + * @tun_flags: MPLS tunnel attributes. |
---|
| 682 | + * |
---|
| 683 | + * The only values @mpls_ethertype should ever be given are %ETH_P_MPLS_UC and |
---|
| 684 | + * %ETH_P_MPLS_MC, indicating MPLS unicast or multicast. Other are rejected. |
---|
| 685 | + */ |
---|
| 686 | +struct ovs_action_add_mpls { |
---|
| 687 | + __be32 mpls_lse; |
---|
| 688 | + __be16 mpls_ethertype; /* Either %ETH_P_MPLS_UC or %ETH_P_MPLS_MC */ |
---|
| 689 | + __u16 tun_flags; |
---|
| 690 | +}; |
---|
| 691 | + |
---|
| 692 | +#define OVS_MPLS_L3_TUNNEL_FLAG_MASK (1 << 0) /* Flag to specify the place of |
---|
| 693 | + * insertion of MPLS header. |
---|
| 694 | + * When false, the MPLS header |
---|
| 695 | + * will be inserted at the start |
---|
| 696 | + * of the packet. |
---|
| 697 | + * When true, the MPLS header |
---|
| 698 | + * will be inserted at the start |
---|
| 699 | + * of the l3 header. |
---|
| 700 | + */ |
---|
| 701 | + |
---|
| 702 | +/** |
---|
670 | 703 | * struct ovs_action_push_vlan - %OVS_ACTION_ATTR_PUSH_VLAN action argument. |
---|
671 | 704 | * @vlan_tpid: Tag protocol identifier (TPID) to push. |
---|
672 | 705 | * @vlan_tci: Tag control identifier (TCI) to push. The CFI bit must be set |
---|
.. | .. |
---|
734 | 767 | * be received on NFNLGRP_CONNTRACK_NEW and NFNLGRP_CONNTRACK_DESTROY groups, |
---|
735 | 768 | * respectively. Remaining bits control the changes for which an event is |
---|
736 | 769 | * delivered on the NFNLGRP_CONNTRACK_UPDATE group. |
---|
| 770 | + * @OVS_CT_ATTR_TIMEOUT: Variable length string defining conntrack timeout. |
---|
737 | 771 | */ |
---|
738 | 772 | enum ovs_ct_attr { |
---|
739 | 773 | OVS_CT_ATTR_UNSPEC, |
---|
.. | .. |
---|
746 | 780 | OVS_CT_ATTR_NAT, /* Nested OVS_NAT_ATTR_* */ |
---|
747 | 781 | OVS_CT_ATTR_FORCE_COMMIT, /* No argument */ |
---|
748 | 782 | OVS_CT_ATTR_EVENTMASK, /* u32 mask of IPCT_* events. */ |
---|
| 783 | + OVS_CT_ATTR_TIMEOUT, /* Associate timeout with this connection for |
---|
| 784 | + * fine-grain timeout tuning. */ |
---|
749 | 785 | __OVS_CT_ATTR_MAX |
---|
750 | 786 | }; |
---|
751 | 787 | |
---|
.. | .. |
---|
798 | 834 | struct ovs_key_ethernet addresses; |
---|
799 | 835 | }; |
---|
800 | 836 | |
---|
| 837 | +/* |
---|
| 838 | + * enum ovs_check_pkt_len_attr - Attributes for %OVS_ACTION_ATTR_CHECK_PKT_LEN. |
---|
| 839 | + * |
---|
| 840 | + * @OVS_CHECK_PKT_LEN_ATTR_PKT_LEN: u16 Packet length to check for. |
---|
| 841 | + * @OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_GREATER: Nested OVS_ACTION_ATTR_* |
---|
| 842 | + * actions to apply if the packer length is greater than the specified |
---|
| 843 | + * length in the attr - OVS_CHECK_PKT_LEN_ATTR_PKT_LEN. |
---|
| 844 | + * @OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_LESS_EQUAL - Nested OVS_ACTION_ATTR_* |
---|
| 845 | + * actions to apply if the packer length is lesser or equal to the specified |
---|
| 846 | + * length in the attr - OVS_CHECK_PKT_LEN_ATTR_PKT_LEN. |
---|
| 847 | + */ |
---|
| 848 | +enum ovs_check_pkt_len_attr { |
---|
| 849 | + OVS_CHECK_PKT_LEN_ATTR_UNSPEC, |
---|
| 850 | + OVS_CHECK_PKT_LEN_ATTR_PKT_LEN, |
---|
| 851 | + OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_GREATER, |
---|
| 852 | + OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_LESS_EQUAL, |
---|
| 853 | + __OVS_CHECK_PKT_LEN_ATTR_MAX, |
---|
| 854 | + |
---|
| 855 | +#ifdef __KERNEL__ |
---|
| 856 | + OVS_CHECK_PKT_LEN_ATTR_ARG /* struct check_pkt_len_arg */ |
---|
| 857 | +#endif |
---|
| 858 | +}; |
---|
| 859 | + |
---|
| 860 | +#define OVS_CHECK_PKT_LEN_ATTR_MAX (__OVS_CHECK_PKT_LEN_ATTR_MAX - 1) |
---|
| 861 | + |
---|
| 862 | +#ifdef __KERNEL__ |
---|
| 863 | +struct check_pkt_len_arg { |
---|
| 864 | + u16 pkt_len; /* Same value as OVS_CHECK_PKT_LEN_ATTR_PKT_LEN'. */ |
---|
| 865 | + bool exec_for_greater; /* When true, actions in IF_GREATER will |
---|
| 866 | + * not change flow keys. False otherwise. |
---|
| 867 | + */ |
---|
| 868 | + bool exec_for_lesser_equal; /* When true, actions in IF_LESS_EQUAL |
---|
| 869 | + * will not change flow keys. False |
---|
| 870 | + * otherwise. |
---|
| 871 | + */ |
---|
| 872 | +}; |
---|
| 873 | +#endif |
---|
| 874 | + |
---|
801 | 875 | /** |
---|
802 | 876 | * enum ovs_action_attr - Action types. |
---|
803 | 877 | * |
---|
.. | .. |
---|
842 | 916 | * packet, or modify the packet (e.g., change the DSCP field). |
---|
843 | 917 | * @OVS_ACTION_ATTR_CLONE: make a copy of the packet and execute a list of |
---|
844 | 918 | * actions without affecting the original packet and key. |
---|
| 919 | + * @OVS_ACTION_ATTR_CHECK_PKT_LEN: Check the packet length and execute a set |
---|
| 920 | + * of actions if greater than the specified packet length, else execute |
---|
| 921 | + * another set of actions. |
---|
| 922 | + * @OVS_ACTION_ATTR_ADD_MPLS: Push a new MPLS label stack entry at the |
---|
| 923 | + * start of the packet or at the start of the l3 header depending on the value |
---|
| 924 | + * of l3 tunnel flag in the tun_flags field of OVS_ACTION_ATTR_ADD_MPLS |
---|
| 925 | + * argument. |
---|
845 | 926 | * |
---|
846 | 927 | * Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all |
---|
847 | 928 | * fields within a header are modifiable, e.g. the IPv4 protocol and fragment |
---|
.. | .. |
---|
876 | 957 | OVS_ACTION_ATTR_POP_NSH, /* No argument. */ |
---|
877 | 958 | OVS_ACTION_ATTR_METER, /* u32 meter ID. */ |
---|
878 | 959 | OVS_ACTION_ATTR_CLONE, /* Nested OVS_CLONE_ATTR_*. */ |
---|
| 960 | + OVS_ACTION_ATTR_CHECK_PKT_LEN, /* Nested OVS_CHECK_PKT_LEN_ATTR_*. */ |
---|
| 961 | + OVS_ACTION_ATTR_ADD_MPLS, /* struct ovs_action_add_mpls. */ |
---|
| 962 | + OVS_ACTION_ATTR_DEC_TTL, /* Nested OVS_DEC_TTL_ATTR_*. */ |
---|
879 | 963 | |
---|
880 | 964 | __OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted |
---|
881 | 965 | * from userspace. */ |
---|
.. | .. |
---|
968 | 1052 | __u32 count; |
---|
969 | 1053 | }; |
---|
970 | 1054 | |
---|
| 1055 | +enum ovs_dec_ttl_attr { |
---|
| 1056 | + OVS_DEC_TTL_ATTR_UNSPEC, |
---|
| 1057 | + OVS_DEC_TTL_ATTR_ACTION, /* Nested struct nlattr */ |
---|
| 1058 | + __OVS_DEC_TTL_ATTR_MAX |
---|
| 1059 | +}; |
---|
| 1060 | + |
---|
| 1061 | +#define OVS_DEC_TTL_ATTR_MAX (__OVS_DEC_TTL_ATTR_MAX - 1) |
---|
| 1062 | + |
---|
971 | 1063 | #endif /* _LINUX_OPENVSWITCH_H */ |
---|