| .. | .. | 
|---|
| 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 */ | 
|---|